Миграция библиотек R
Я хотел бы переместить несколько библиотек R ( * ) с одного диска на другой, в Linux, и хотел бы знать, является ли простой шаг возможным и безопасным или если я должен удалить и переустановить пакеты. Я понимаю, что местоположение библиотек определяется через .libPaths()
и просмотрели руководство "установка и администрирование R", чтобы узнать о переносе библиотек, но не видите рекомендуемый процесс.
Я вижу три опции:
- Run
remove.packages()
для всех неосновных пакетов и установите заново черезinstall.packages(lib = "/path/to/new/location")
. - переместить библиотеки (каталоги) с помощью
mv
и используйте символические ссылки, чтобы указать на новые местоположения (и в конечном итоге удалить символическую ссылку) - использовать
mv
команда в Linux для перемещения каталогов оптом и обновления.Library.site
наR_HOME/etc/Rprofile.site
, как указано в R руководство по установке и администрированию
является ли #3 безопасным или есть серьезные проблемы с ним? Проблемы, которые я определил: разрешения каталога и возможность того, что настройка любого пакета хранит абсолютные пути, а не относительные пути (что кажется неправильным и ненужным).
Что касается хранения абсолютных путей, я обнаружил, что rJava
сохраняет расположение R_HOME
в файле run
. Это не проблема библиотеки per se, но это один из признаков пакета (и хорошего пакета при этом), хранящего частную копию абсолютного пути.
(*) существует несколько библиотек и множество пакетов. Естественно, перемещаются только библиотеки (каталоги), но могут быть затронуты пакеты.
обновление 1 / уточнение: просто чтобы уточнить: я только миграция библиотек, без изменения версии R или версий пакетов. Обновление R или пакеты могут выполняться отдельно, но вопрос только в том, возможно ли перемещение библиотек. Кажется, что если необходимо обновить или переустановить все пакеты, чтобы убедиться, что все установлено правильно, то это путь, более похожий на Вариант #1, чем вариант #3.
обновление 2: Ответы на еще один такой пост есть некоторые хорошие идеи о том, как избежать этой проблемы при обновлении. Я не обновляю R, но предложение Дирка Эддельбюттеля не устанавливать пакеты в filetree R разумно.
1 ответов
опция #3 (копирование старой библиотеки в новую библиотеку) должна работать ... но если и только если вы запустите:
update.packages(checkBuilt=TRUE)
таким образом пакеты, которые необходимо перестроить для новых версий, будут обновлены. Часто бывает так, что новые версии добавляют требования (например, надвигающееся требование в 2.14.x для пространств имен).
Edit: видя, что это просто движется вокруг шезлонгов .... Я собираюсь отступить от одобрения #3, Если вы перемещаете любую из базовых R установка. Это сработало для меня на Mac, но я не видел обещания в руководстве по установке и администрированию R или R FAQ, что это должны работа. Вы можете выполнить #1 (который, вероятно, безопаснее всего в различных условиях) с помощью этой последовательности:
# 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.
С недавно установленной версией R с помощью .Libpaths, установленные в ваших настройках (или даже в той же старой установке):
load("pkglist.Rdata")
install.packages(save.pkg.list)
просто перемещение пакетов в новую библиотеку, если исполняемые файлы R не было изменено может быть успешным (предполагая, что вы также измените.Libpaths), но у меня нет установки Linux, чтобы проверить ее или узнать, как будут затронуты любые указатели, установленные операциями настройки.