Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Offline install of R package and dependencies

Tags:

r

cran

Suppose I need to install a number of packages on a (Linux) machine that does not have an internet connection. Let's say that I downloaded a copy of cran and burned it on a DVD that I bring to the offline location:

wget ftp://cran.r-project.org/pub/R/src/contrib/*.tar.gz 

I can even add a PACKAGES file that contains an overview of all the source packages and their dependencies:

library(tools) write_PACKAGES() 

How could I use this offline to install a source package in such a way that dependencies are resolved and installed from the local files as well? For example, someone wants to install package ggplot2, which has a fairly deep dependency structure. Assume the source package of ggplot2 and all of its dependencies are available as source packages in the current working directory. If I do:

install.packages("ggplot2_0.9.1.tar.gz", repos=NULL) 

This results in an error, because the dependencies are not resolved at all. Alternatively:

install.packages(list.files(pattern="*.tar.gz"), repos=NULL) 

However this also ignores the dependency structure, and tries to install packages in alphabetical order, which will also fail.

I looked into available.packages and contrib.url but I just can't find an example of installing a source package from a local file including it's dependencies.

like image 600
Jeroen Ooms Avatar asked May 29 '12 22:05

Jeroen Ooms


People also ask

Can you install R packages offline?

To install these packages offline, you can download a compressed file that matches your operating system from ; copy the file to your offline machine. In some cases you'll have to download the dependencies packages as well; if this is required, it will be noted under your package link.

How do I install R packages locally?

First, we'll need to create a directory in the home directory, then set a variable to point R at that directory, and then install the package. and you're done. You can pick any directory to make your personal R library.

How do I manually download R packages?

Press Ctrl + Left Click or Cmd + Left Click in the function name (written on the script), when using RStudio. Go to the CRAN (or GitHub, R-forge, …) page of the package and download the package file to inspect the source code manually.


1 Answers

The correct answer was given by Joshua Ulrich in the comment on the question:

The key is prefixing the argument to either repos or contriburl with file://. So in Unixy systems one could do:

install.packages("ggplot2", contriburl="file:///path/to/packages/") 

This assumes that all required source packages, as well as a PACKAGES index file is available in /path/to/packages. If no PACKAGES file is present, this should be generated first using:

library(tools) write_PACKAGES("/path/to/packages/") 

which will generate an index of all source packages found in this directory. Note that in the example, there are 3 slashes behind the file: prefix. The third slash indicates a path relative to the root of the file system.

The difference between the repos and contriburl argument is that repos will append another /src/contrib to the path specified, as this is usually where source packages are located on an official CRAN repository mirror.

like image 154
Jeroen Ooms Avatar answered Sep 21 '22 23:09

Jeroen Ooms