2010-05-25 10 views
35

Ich möchte ein lokales R-Paket-Repository erstellen, sodass Benutzer in meinem Unternehmen Pakete daraus installieren können und die Systemadministratoren den lokalen Repo regelmäßig aktualisieren können. Der Zugriff auf die CRAN-Spiegel wird derzeit verweigert.Erstellen eines lokalen R-Paket-Repositorys

Gibt es eine einfache Möglichkeit, dies zu tun?

Vielen Dank für Ihre Zeit.

EDIT: Ich entschuldige mich für die Aufsicht. Der Leitfaden ist, wo ich zuerst hätte schauen sollen. Vielen Dank.

Antwort

36

Ja, entweder eine Kopie von CRAN oder ein Repo mit lokalen Paketen ist einfach einzurichten. Vermutlich wollen Sie dies für Windows dies so tun:

  1. erstellen Top-Level-Verzeichnis auf Ihrem Webserver, sagen R/
  2. die übliche Hierarchie erstellen dort in: R/bin/windows/contrib/2.11. Wenn Sie andere (frühere) Versionen unterstützen müssen, erstellen Sie einfach die Verzeichnisse 2.10, 2.9, ... neben dem Verzeichnis 2.11.
  3. Legen Sie die Pakete, die Sie in das Verzeichnis benötigen (etwa 2.11), dann in dieses Verzeichnis wechseln und den folgenden Befehl ausführen PACKAGES und PACKAGES.gz Dateien für das Repository zu generieren:

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

Das ist alles, was es gibt - jetzt können Sie auf das Repository zugreifen, indem Sie auf die Adresse zeigen, die einen Befehl wie

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

was ich sogar in R/zzz.R für lokale Pakete mache, damit sie sich selbst aktualisieren.

bearbeiten etwa fünf + Jahre später: Und das drat Paket jetzt automatisiert viele dieser und glänzt vor allem, wenn Sie auch GitHub verwenden das Repository über http/https zu dienen (ist aber für andere oder lokales Hosting auch nützlich) .

+0

Automatische Aktualisierung klingt sehr praktisch, aber ich verstehe nicht, wo Sie den Update-Befehl setzen. Ich habe mit 'zzz.R' und' .onLoad' gespielt, kann aber 'R CMD check ...' nicht bestehen. In gewisser Weise erscheint es etwas merkwürdig, das zu aktualisieren, was Sie gerade laden. – Backlin

+0

Der Befehl update kann von jedem, der zum Repository gelangen kann, in R geschrieben werden. –

+4

Weiter zu Dirks Kommentaren, wenn Sie die Paketbenutzer dazu bringen, ihre 'Rprofile.site'-Dateien (die beim Start jeder R-Sitzung ausgeführt werden) zu bearbeiten, um etwas wie' options (repos = c (getOption ("repos") MyCompanyRepo = "http: //my.local.server/R"))), dann können Ihre Benutzer Dinge wie 'install.packages (" meinpaket ")' tun, ohne auf einen Pfad verweisen zu müssen. –

2

Das Paket miniCRAN bietet auch große Funktionalität dafür. Der Hauptvorteil besteht darin, dass Sie keinen vollständigen Spiegel benötigen, sondern einen "Mini" -Spiegel von CRAN mit nur den erforderlichen Paketverteilungen einschließlich ihrer Abhängigkeiten einrichten können.

Verwandte Themen