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.