2016-04-08 21 views
3

Ich habe einen Fehler beim Offline-Installieren von Paketen, wenn sie Abhängigkeiten haben. Dies ist sehr ähnlich zu this question. Ich habe die Anweisungen dort für die Offline-Installation befolgt. So habe ich alle CRAN-Pakete in einem Verzeichnis installiert und erstellt die Datei PACKAGES auch.Fehler beim Installieren von Paketen mit Abhängigkeiten vom lokalen Repo

Aber es scheint ein subtiler Fehler mit dem Prozess in dieser Antwort skizziert zu sein

ich ein Paket aus dem lokalen Repo auf Linux ohne Probleme installieren können Sie den Befehl unten also nicht folgende Einzelheiten enthält die repo mit:

install.packages("/software/r_packages/src/contrib/ZillowR_0.1.0.tar.gz",  lib="/usr/lib64/R/library") 

Allerdings, wenn ich die Abhängigkeiten aufheben möchte, muss ich es auf den Repo und seine PACKAGES Datei mit z

install.packages("/software/r_packages/src/contrib/ZillowR_0.1.0.tar.gz",  lib="/usr/lib64/R/library", repos="file:///software/r_packages/") 

Aber wenn ich dies tun bekomme ich den Fehler:

Warning message: 
package ‘/software/r_packages/src/contrib/ZillowR_0.1.0.tar.gz’ is not available (for R version 3.2.3) 

Ich habe getestet und bestätigt es die PACKAGES Datei liest, denn wenn ich einen Tippfehler in den Eintrag für ZillowR setzen in PACKAGES I Es wird ein Fehler angezeigt, der darauf hinweist, dass der Eintrag nicht korrekt analysiert werden kann.

+0

@Thomas Habe es gerade ausprobiert - selbe Fehler leider –

+0

Ja das hat funktioniert, danke! (Können Sie das als Antwort eingeben, damit ich die Antwort akzeptieren kann?) Ich hatte meine Quelldateien zunächst unter software/r_packages/src/contrib. Wenn ich sie zurück nach software/r_packages kopierte, aber die PACKAGES-Datei unter software/r_packages/src_contrib aufbewahrte, funktionierte das einwandfrei. Ich schätze, wenn der Installer die PACKAGES-Datei erreicht, arbeitet er sich 2 Ebenen zurück, um die tatsächliche Quelle zu finden. –

Antwort

1

Was sollte für Sie arbeiten hier ist die folgende:

install.packages(pkgs = "ZillowR", type = "source", 
       lib = "/usr/lib64/R/library", 
       contriburl = "file:///software/r_packages/") 

Die Argumente für install.packages() kann ziemlich überwältigend sein und alle Standardeinstellungen konfiguriert sind, mit Paketen von CRAN (oder einem anderen Remote-Repository) installiert zu arbeiten. Auszupacken, was hier vor sich geht, sollten Sie den folgenden Code ZillowR von CRAN installieren:

install.packages(pkgs = "ZillowR") 

Dies ist Einstellung viele Standardwerte, so dass Sie ruft tatsächlich:

install.packages(pkgs = "ZillowR", lib = .libPaths()[1], 
       repos = getOption("repos"), 
       contriburl = contrib.url(repos, type), 
       type = getOption("pkgType")) 

Die beiden wichtigsten Standardwerte einige globale Optionen fordern, die auf meiner gesetzt installieren:

> getOption("repos") 
           CRAN       CRANextra 
     "https://cloud.r-project.org" "http://www.stats.ox.ac.uk/pub/RWin" 
> getOption("pkgType") 
[1] "both" 

Sie müssen (potentiell) überwinden diese Vorgaben in zu überwinden, um eine lokale Installation und den Schlüssel eines zu tun ist, der Wert von contriburl (die von repos erbt. Zu wissen, dass Ihre Intuition (zu Recht) scheint zu folgen hat die Anweisungen für installing a local source package, wie zum Beispiel: erwartet

install.packages(pkgs = "/software/r_packages/src/contrib/ZillowR_0.1.0.tar.gz", repos = NULL, type = "source") 

Aber das Verhalten von install.packages() ist völlig anders als dort, weil das pkgs Argument den Dateiname eines Quell-Tarball (wenn repos und somit contriburl ist NULL).

Mit einem lokalen CRAN-like-Repo, wollen Sie tatsächlich pkgs zum Paketnamen setzen und contriburl auf dem lokalen Repo-Pfad zu setzen.Als hier Bezug the relevant section of the docs für contriburl ist:

contriburl URL(s) of the contrib sections of the repositories. Use this argument if your repository mirror is incomplete, e.g., because you burned only the ‘contrib’ section on a CD, or only have binary packages. Overrides argument repos. Incompatible with type = "both".

Der letzte Satz zeigt, warum Sie (möglicherweise) type = "source" einstellen müssen.

+0

Funktioniert perfekt. Vielen Dank! @Thomas –