Migracja bibliotek R

Chciałbym przenieść kilka bibliotek R ( * ) z jednego dysku na drugi, na Linuksie i chciałbym wiedzieć, czy proste przeniesienie jest wykonalne i bezpieczne, czy też powinienem odinstalować i ponownie zainstalować pakiety. Zdaję sobie sprawę, że lokalizacje bibliotek są identyfikowane za pomocą .libPaths() i przejrzałem podręcznik "R Installation and Administration", aby dowiedzieć się o migrowaniu bibliotek, ale nie widzę zalecanego procesu.

Dostrzegam trzy opcje:

  1. Run remove.packages() for all pakietów nie-bazowych i zainstalować na nowo poprzez install.packages(lib = "/path/to/new/location").
  2. W przeciwieństwie do innych bibliotek, które nie są dostępne w katalogu, nie są dostępne w katalogu.]}
  3. użyj polecenia mv w Linuksie, aby przenieść hurtowo katalogi i zaktualizować .Library.site w R_HOME/etc/Rprofile.site, zgodnie z sugestią w R Instrukcja Instalacji i Administracji

Opcja # 1 jest tępa. Opcja # 2 powinna działać, ale wydaje się trochę niesolidna.

Is # 3 safe or are there poważne problemy z nim? Zidentyfikowane przeze mnie problemy to: uprawnienia katalogów i możliwość, że konfiguracja dowolnego pakietu przechowuje ścieżki bezwzględne, a nie ścieżki względne (co wydaje się niesłuszne i niepotrzebne).

Jeśli chodzi o przechowywanie ścieżek bezwzględnych, odkryłem, że rJava przechowuje lokalizację R_HOME w pliku o nazwie run. Nie jest to problem z biblioteką per se , ale jest to jedna z oznak, że pakiet (i w tym dobry pakiet) przechowuje prywatną kopię absolutnej / align = "left" /

(*) istnieje kilka bibliotek i wiele pakietów. Oczywiście, tylko biblioteki (katalogi) są przenoszone, ale pakiety mogą mieć wpływ.


UPDATE 1 / Wyjaśnienie: dla wyjaśnienia: jestem tylko migruję biblioteki, nie zmieniając wersji R ani wersji pakietów. Aktualizacja R lub pakietów może być wykonywana oddzielnie, ale pytanie tylko, czy przeniesienie bibliotek jest możliwe. Wydaje się, że jeśli jest to konieczne aby zaktualizować lub ponownie zainstalować wszystkie pakiety w celu upewnienia się, że rzeczy są zainstalowane poprawnie, jest to ścieżka bardziej zbliżona do opcji # 1 Niż opcji #3.

UPDATE 2: Odpowiedzi na another więc post mają kilka dobrych pomysłów, jak uniknąć tego problemu podczas aktualizacji. Nie aktualizuję R, ale sugestia Dirka Eddelbuettela, aby nie instalować pakietów w pliku R jest mądra.

Author: Community, 2011-08-20

1 answers

Opcja #3 (Kopiowanie starej biblioteki do nowej biblioteki) powinna działać ... ale wtedy i tylko wtedy, gdy uruchamiasz:

update.packages(checkBuilt=TRUE)

W ten sposób pakiety, które muszą zostać przebudowane na nowe wersje, zostaną zaktualizowane. Często zdarza się, że nowe wersje dodają wymagania (takie jak zbliżający się wymóg w 2.14.x Dla przestrzeni nazw).

/ Align = "left" / ... Wycofam się z zatwierdzania #3, Jeśli przenosisz którąś z instalacji base R. Ma działa dla mnie na Macu, ale nie widziałem obietnicy w Przewodniku instalacji i Administracji R lub FAQ R, że to powinno działać. Można osiągnąć #1 (który jest prawdopodobnie najbezpieczniejszy w różnych warunkach) przez tę sekwencję:
# In original installation, get the non-default package list:
save.pkg.list <- installed.packages()[is.na(installed.packages()[ , "Priority"]), 1]
save(save.pkg.list, file="pkglist.Rdata")
# If you want to use remove.packages() at this point it's fine. 
# Or just delete their directories.

Ze świeżo zainstalowaną wersją R zLibpaths ustawione według Twoich preferencji (lub nawet tej samej starej instalacji):

load("pkglist.Rdata")
install.packages(save.pkg.list)

Przeniesienie pakietów do nowej biblioteki, jeśli pliki wykonywalne R nie zostały zmienione, może się udać (zakładając, że również zmienić .Libpaths), ale nie mam instalacji Linuksa, aby ją przetestować, ani Nie wiem, jak wpływ na jakiekolwiek wskaźniki ustawione przez operacje configure.

 27
Author: 42-,
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
2012-11-30 23:50:14