Instalación fuera de línea del paquete R y dependencias

Supongamos que necesito instalar varios paquetes en una máquina (Linux) que no tiene conexión a Internet. Digamos que descargué una copia de Cran y la grabé en un DVD que traje a la ubicación fuera de línea:

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

Incluso puedo agregar un archivo de PAQUETES que contiene una descripción general de todos los paquetes fuente y sus dependencias:

 library(tools) write_PACKAGES() 

¿Cómo podría usar esto fuera de línea para instalar un paquete fuente de tal manera que las dependencias se resuelvan e instalen desde los archivos locales también? Por ejemplo, alguien quiere instalar el paquete ggplot2, que tiene una estructura de dependencia bastante profunda. Supongamos que el paquete fuente de ggplot2 y todas sus dependencias están disponibles como paquetes fuente en el directorio de trabajo actual. Si lo hago:

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

Esto resulta en un error, porque las dependencias no se resuelven en absoluto. Alternativamente:

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

Sin embargo, esto también ignora la estructura de dependencia e intenta instalar paquetes en orden alfabético, que también fallará.

Busqué en available.packages y contrib.url pero no puedo encontrar un ejemplo de instalación de un paquete fuente desde un archivo local, incluidas sus dependencias.

La respuesta correcta fue dada por Joshua Ulrich en el comentario sobre la pregunta:

La clave está prefijando el argumento a repos o contriburl con file:// . Entonces en los sistemas Unixy uno podría hacer:

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

Esto supone que todos los paquetes de origen requeridos, así como un archivo de índice de PAQUETES está disponible en /path/to/packages . Si no hay ningún archivo de PAQUETES presente, esto se debe generar primero usando:

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

que generará un índice de todos los paquetes fuente encontrados en este directorio. Tenga en cuenta que en el ejemplo, hay 3 barras detrás del file: prefijo. La tercera barra indica una ruta relativa a la raíz del sistema de archivos.

La diferencia entre los repos y el argumento contriburl es que los repos anexarán otro /src/contrib a la ruta especificada, ya que esto suele ser cuando los paquetes fuente se encuentran en un espejo del repository CRAN oficial.

Con referencia a la respuesta anterior, si la instalación está en Windows, write_PACKAGES () genera dos archivos: PAQUETES y PAQUETES.gz en el directorio ‘/ ruta / a / paquetes /’ donde se ubican todos los archivos zip. El archivo PACKAGES.gz debe eliminarse antes de que la función install.packages () pueda leer correctamente el archivo PACKAGES solitario, de lo contrario, aparece el mensaje ‘no se puede abrir el archivo comprimido’.

Tuve los mismos problemas durante la instalación sin conexión. De alguna manera no funcionó por línea de comando.

Descargué, extraje todas las dependencias (manteniendo la verificación de la versión mínima requerida) y pegué las carpetas en la carpeta de la biblioteca. De esta forma solo mi problema fue resuelto.

    Intereting Posts