2010-05-25 19 views
35

Me gustaría crear un repositorio de paquetes R local para que los usuarios de mi empresa puedan instalar paquetes y los administradores del sistema puedan actualizar periódicamente el repositorio local. El acceso a los espejos CRAN está actualmente denegado.Creación de un repositorio de paquetes R local

¿Hay una manera simple de hacer esto?

Gracias por su tiempo.

EDIT: me disculpo por la supervisión. La guía es donde debería haber mirado primero. Gracias.

Respuesta

36

Sí, una copia de CRAN o un repositorio con paquetes locales es fácil de configurar. Es de suponer que desea que esta para Windows de modo de hacer esto:

  1. Crear un directorio de nivel superior en su servidor web, dice R/
  2. crear la jerarquía habitual en ese país: R/bin/windows/contrib/2.11. Si necesita admitir otras versiones (anteriores), simplemente cree los directorios 2.10, 2.9, ... junto al directorio 2.11.
  3. Coloque los paquetes que necesita en el directorio (por ejemplo, 2.11), a continuación, cambiar a ese directorio y ejecute el siguiente comando para generar PACKAGES y PACKAGES.gz archivos para el repositorio:

    tools::write_PACKAGES(".", type="win.binary")

Eso es todo: ahora puede acceder al repositorio señalando la dirección que se le da a un comando como

update.packages(repos="http://my.local.server/R", ask=FALSE) 

que incluso hago en R/zzz.R para paquetes locales para que se actualicen.

Editar unos cinco + años después: Y el paquete drat ahora automatiza mucho de esto, y brilla sobre todo si también está usando GitHub para servir a un repositorio sobre HTTP/HTTPS (pero es útil para otros o local de alojamiento también) .

+0

La actualización automática suena muy conveniente, pero no entiendo dónde poner el comando de actualización. He estado jugando con 'zzz.R' y' .onLoad' pero no puedo pasar 'R CMD check ...'. De alguna manera, parece un poco extraño actualizar lo que estás cargando actualmente. – Backlin

+0

El comando de actualización puede escribirse en R por cualquiera que pueda acceder al repositorio. –

+4

Además de los comentarios de Dirk, si obtiene que los usuarios del paquete editen sus archivos 'Rprofile.site' (que se ejecutan al inicio de cada sesión R) para incluir algo como' options (repos = c (getOption ("repos"), MyCompanyRepo = "http: //my.local.server/R")) ', luego sus usuarios pueden hacer cosas como' install.packages ("mypackage") 'sin necesidad de apuntar a una ruta. –

2

El paquete miniCRAN también proporciona una gran funcionalidad para esto. La principal ventaja es que no necesita un espejo completo, pero puede configurar un espejo "mini" de CRAN con solo las distribuciones de paquetes que necesita, incluidas sus dependencias.

Cuestiones relacionadas