2012-08-27 26 views
16

Estoy creando un repositorio de paquetes R personalizado y me gustaría replicar la estructura de archivo CRAN mediante la cual las versiones anteriores de los paquetes se almacenan en el directorio src/contrib/Archive/packageName/. Me gustaría utilizar la función install_version en devtools (fuente here), pero esa función depende de tener una estructura de archivo similar a CRAN en lugar de tener todas las versiones de paquetes en src/contrib/.¿Hay alguna herramienta de administración de repositorios de paquetes R?

¿Hay alguna herramienta de administración de repositorio de paquetes R que facilite la creación de esta estructura de directorios y otras tareas relacionadas (por ejemplo, actualizar el archivo Archive.rds)?

También sería bueno si las herramientas de gestión manejan la lógica paquete type en el lado del repositorio para que pueda utilizar el mismo código install.packages() o install_version() en un servidor Linux como en mi Mac local (es decir, no tengo a use type="both" o type="source" al instalar localmente en una Mac).

+3

Puede formular esta pregunta en la lista de correo R-devel (si aún no lo ha hecho), ellos lo saben mejor. O tal vez incluso directamente de los mantenedores de CRAN, es decir, Kurt. –

+0

Gracias, lo hice. Voy a publicar una respuesta pronto. –

Respuesta

4

Respuesta corta: No realmente para uso off-the-shelf.

Respuesta larga: Hay un par de herramientas que se pueden utilizar para gestionar su cesión temporal, pero aún no es coherente ecosistema off-the-shelf.

Los mantenedores de CRAN guardan una serie de scripts here para administrar el repositorio de CRAN, pero no está claro cómo funcionan todos juntos o qué partes se necesitan para actualizar el índice de paquete, ejecutar comprobaciones de paquete o administrar la estructura de directorios.

La función tools::write_PACKAGES se puede utilizar para actualizar el índice del paquete, pero esto debe actualizarse cada vez que se agrega, actualiza o elimina un paquete del repositorio.

M.eik Michalke ha creado el roxyPackagepackage, que tiene la capacidad de actualizar automáticamente un repositorio dado, instalarlo, etc. El desarrollador también ha añadido recientemente la posibilidad de tener la estructura de los archivos imita la de la CRAN con el archive_structure función. La desventaja es que el paquete no está en CRAN y probablemente sería mejor si se integra con devtools. También es nuevo y no está listo para un uso amplio todavía.

Finalmente, creé un pequeño Ruby script que mira un repositorio dado y actualiza el índice del paquete si los archivos cambian. Sin embargo, esto está hecho para trabajar para mi organización específica y tendrá que ser refactorizado para uso externo. Puedo hacerlo más general si alguien está interesado en él.

Cuestiones relacionadas