r - comando - paquetes debian
Solo descarga las fuentes de un paquete y todas las dependencias. (3)
Me pregunto si hay una manera de usar install.packages()
u otras funciones relacionadas para hacer lo siguiente: solo descargar las fuentes (es decir, los archivos tar.gz
) de los paquetes especificados y todas sus dependencias en una carpeta específica (en Windows) .
Una razón para hacer esto es: digamos que tengo una cuenta de Linux que no está habilitada para el acceso a Internet. Para instalar los paquetes en la máquina Linux, primero descargo todas las fuentes necesarias en mi máquina Windows, luego las transfiero a la máquina Linux y las instalo en la máquina Linux usando
install.packages(''/home/me/R/Packages/blah.tar.gz'', repos = NULL)
Hace poco tuve un problema en el que quería descargar todas las dependencias y lo resolví así:
Digamos que quiero todas las dependencias e importaciones de ggplot2
y MASS
:
getPackages <- function(packs){
packages <- unlist(
tools::package_dependencies(packs, available.packages(),
which=c("Depends", "Imports"), recursive=TRUE)
)
packages <- union(packs, packages)
packages
}
packages <- getPackages(c("ggplot2", "MASS"))
Ahora puedo descargar los paquetes a otro directorio.
download.packages(packages, destdir="whereyouactuallywantthefiles",
type="source")
Desde allí, si desea hacer un repositorio local en su PC con Linux, siga las instrucciones here .
Pruebe download.packages(c("xts", "rms"), "c:/TEMP", .....)
lugar de install.packages()
; Puede asignarle directamente un directorio de destino en el segundo argumento.
Edite varios años después: como se indicó anteriormente en otras respuestas y comentarios, ya se han agregado varias funciones de ayuda a las herramientas de R y los paquetes de herramientas. R 3.4.0 tendrá tools::CRAN_package_db()
para descargar el archivo PACKAGES.rds
nivel superior (y, por supuesto, también puede combinar download.file()
y readRDS()
para eso también).
Ahora hay mejores opciones para esto en el paquete de herramientas que viene con base R: package_dependencies()
. Consulte, por ejemplo, la Respuesta de @ sebastian-c y estas Preguntas y respuestas recientes para un caso de uso relacionado.
Hay una función getDependencies()
en el paquete utils. No he estudiado cómo funciona, pero combinar eso con @ Dirk''s Answer debería ayudarte a llegar hasta allí.
Básicamente, sin embargo, parece que lo usas como:
utils:::getDependencies(pkgs, dependencies, available, lib)
donde pkgs
es el vector de caracteres de los paquetes a instalar, las dependencies
son un vector de caracteres de los tipos de dependencias (Depends, Enhances, etc.) que usted desea, available
es el resultado de available.packages()
y lib
es la ubicación de la biblioteca para los paquetes dentro de Que dependencias se evalúan.
Si depura install.packages()
básicamente está realizando el paso getDependencies()
luego el paso @ download.packages()
Dirk antes de que realmente comience a instalar algo.