35 Stimmen

Nur die Quellen eines Pakets und alle Abhängigkeiten herunterladen

Ich frage mich, ob es eine Möglichkeit gibt, die install.packages() oder andere verwandte Funktionen, um Folgendes zu tun: nur die Quellen herunterladen (d.h. tar.gz Dateien) der angegebenen Pakete und aller ihrer Abhängigkeiten in einen bestimmten Ordner (unter Windows).

Ein Grund dafür ist: Angenommen, ich habe ein Linux-Konto, das nicht für den Internetzugang aktiviert ist. Um die Pakete auf dem Linux-Rechner zu installieren, würde ich zuerst alle benötigten Quellen auf meinem Windows-Rechner herunterladen, sie dann per FTP auf den Linux-Rechner übertragen und sie auf dem Linux-Rechner installieren, indem ich

  install.packages('/home/me/R/Packages/blah.tar.gz', repos = NULL)

46voto

sebastian-c Punkte 14627

Ich hatte kürzlich ein Problem, bei dem ich alle Abhängigkeiten herunterladen wollte, und ich habe es so gelöst:

Angenommen, ich möchte alle Abhängigkeiten und Importe von 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"))

Ich kann jetzt die Pakete in ein anderes Verzeichnis herunterladen.

download.packages(packages, destdir="whereyouactuallywantthefiles", 
                  type="source")

Wenn Sie von dort aus ein lokales Repository auf Ihrem Linux-PC erstellen möchten, folgen Sie den Anweisungen aquí .

17voto

Dirk Eddelbuettel Punkte 345316

Versuchen Sie download.packages(c("xts", "rms"), "c:/TEMP", .....) 代わりに install.packages() ; Sie können ihm im 2. Argument direkt ein Zielverzeichnis angeben.

Mehrere Jahre später bearbeiten: Wie bereits in anderen Antworten und Kommentaren erwähnt, wurden inzwischen mehrere Hilfsfunktionen zu den R-Paketen tools und utils hinzugefügt. R 3.4.0 wird haben tools::CRAN_package_db() zum Herunterladen der obersten Ebene PACKAGES.rds Datei (und natürlich können Sie auch einfach die download.file() y readRDS() auch dafür).

16voto

Gavin Simpson Punkte 163780

Hierfür gibt es jetzt bessere Möglichkeiten in der Werkzeuge Paket, das mit der Basisversion von R geliefert wird: package_dependencies() . Siehe zum Beispiel die Antwort von @sebastian-c und diese aktuelle Fragen und Antworten für einen verwandten Anwendungsfall.


Es gibt eine nicht exportierte getDependencies() Funktion im Paket utils. Ich habe nicht studiert, wie es funktioniert, aber die Kombination mit @Dirk's Antwort sollte Sie die meisten der Weg dorthin zu bekommen.

Grundsätzlich scheint es aber so zu sein, dass Sie es wie folgt verwenden:

utils:::getDependencies(pkgs, dependencies, available, lib)

donde pkgs ist der Zeichenvektor der zu installierenden Pakete, dependencies ist ein Zeichenvektor der gewünschten Arten von Abhängigkeiten (Depends, Enhances usw.), available ist die Ausgabe von available.packages() y lib ist der Bibliotheksort für die Pakete, in denen die Abhängigkeiten ausgewertet werden.

Wenn Sie Debuggen install.packages() Es macht im Grunde genommen die getDependencies() Schritt dann @Dirk's download.packages() bevor es mit der eigentlichen Installation beginnt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X