Instalacja Offline pakietu R I zależności

Załóżmy, że muszę zainstalować kilka pakietów na komputerze (Linux), który nie ma połączenia z Internetem. Załóżmy, że pobrałem kopię cran i wypaliłem ją na DVD, które przynoszę do lokalizacji offline: {]}

wget ftp://cran.r-project.org/pub/R/src/contrib/*.tar.gz

Mogę nawet dodać plik PACKAGES, który zawiera przegląd wszystkich pakietów źródłowych i ich zależności:

library(tools)
write_PACKAGES()

Jak mogę użyć tego offline, aby zainstalować pakiet źródłowy w taki sposób, że zależności są rozwiązywane i instalowane z lokalnego akta też? Na przykład, ktoś chce zainstalować pakiet ggplot2, który ma dość głęboką strukturę zależności. Załóżmy, że pakiet źródłowy ggplot2 i wszystkie jego zależności są dostępne jako pakiety źródłowe w bieżącym katalogu roboczym. If I do:

install.packages("ggplot2_0.9.1.tar.gz", repos=NULL)

Powoduje to błąd, ponieważ zależności nie są w ogóle rozwiązywane. Alternatywnie:

install.packages(list.files(pattern="*.tar.gz"), repos=NULL)

Jednak to również ignoruje strukturę zależności i próbuje zainstalować pakiety w porządku alfabetycznym, które również zawiedzie.

Przyjrzałem się available.packages i contrib.url, ale nie mogę znaleźć przykładu instalacji pakietu źródłowego z lokalnego pliku zawierającego jego zależności.

 55
Author: Jeroen, 2012-05-30

3 answers

Prawidłową odpowiedź dał Joshua Ulrich w komentarzu do pytania:

Kluczem jest prefiks argumentu na repos lub contriburl z file://. Więc w systemach Unixy można zrobić:

install.packages("ggplot2", contriburl="file:///path/to/packages/")

Zakłada to, że wszystkie wymagane pakiety źródłowe, a także plik indeksu pakietów jest dostępny w /path/to/packages. Jeśli nie ma pliku PACKAGES, należy go najpierw wygenerować używając:

library(tools)
write_PACKAGES("/path/to/packages/")

Który wygeneruje indeks wszystkich pakietów źródłowych znalezionych w tym katalogu. Zauważ, że w przykładzie za przedrostkiem file: znajdują się 3 ukośniki. Trzeci ukośnik wskazuje ścieżkę względem katalogu głównego systemu plików.

Różnica między argumentem repos i contriburl polega na tym, że repos doda Inny /src/contrib do podanej ścieżki, ponieważ zwykle jest to miejsce, w którym pakiety źródłowe znajdują się w oficjalnym repozytorium Cran.

 42
Author: Jeroen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-02 19:01:21

W odniesieniu do odpowiedzi powyżej, jeśli instalacja odbywa się w systemie Windows, To write_packages() generuje dwa pliki: PACKAGES i PACKAGES.gz w katalogu ' / path / to / packages/', gdzie znajdują się wszystkie pliki zip. Pakiety plików.gz należy usunąć przed instalacją.funkcja packages() jest w stanie poprawnie odczytać pojedynczy plik PACKAGES, w przeciwnym razie pojawia się błąd "nie można otworzyć skompresowanego pliku".

 4
Author: user3282777,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-06 09:38:23

Miałem te same problemy podczas instalacji offline. Jakoś to nie działa przez wiersz poleceń.

Pobrałem, wyodrębniłem wszystkie zależności (sprawdzając wymaganą wersję min) i wklejałem foldery do folderu biblioteki. W ten sposób rozwiązano tylko mój problem.

 0
Author: Shekhar Sahu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-22 12:30:07