Я хотел бы переместить несколько библиотек R (*) с одного диска на другой, в Linux, и хотел бы знать, возможно ли и безопасно ли это простое перемещение, или мне следует удалить и переустановить пакеты . Я понимаю, что расположение библиотек определяется с помощью .libPaths ()
, и просмотрел руководство «Установка и администрирование R», чтобы узнать о миграции библиотек, но не вижу рекомендуемый процесс.
Я вижу три варианта:
remove.packages ()
для всех небазовых пакетов и установить заново через install.packages (lib = "/ path / to / новое / местоположение ")
. mv
и используйте символические ссылки, чтобы указать на новые места (и, в конечном итоге, удалить символическую ссылку). mv
в Linux для перемещения каталоги оптом и обновите .Library.site
в R_HOME / etc / Rprofile.site
, как предложено в Руководстве по установке и администрированию R Вариант № 1 тупой . Вариант №2 должен работать, но кажется немного необоснованным.
№3 безопасен или с ним серьезные проблемы? Я выявил следующие проблемы: права доступа к каталогам и возможность того, что установка любого пакета хранит абсолютные пути, а не относительные пути (что кажется необоснованным и ненужным).
Что касается хранения абсолютных путей, я обнаружил, что rJava
хранит местоположение R_HOME
в файле с именем run
. Это не проблема библиотеки как таковая , но это один из признаков того, что пакет (и при этом хороший пакет) хранит частную копию абсолютного пути.
(*) Есть несколько библиотек и множество пакетов. Естественно, перемещаются только библиотеки (каталоги), но это может повлиять на пакеты.
ОБНОВЛЕНИЕ 1 / Уточнение: Просто чтобы уточнить: я только мигрирую библиотеки, не меняя версию R или версии пакетов. Обновление R или пакетов может выполняться отдельно, но вопрос лишь в том, возможно ли перемещение библиотек. Кажется, что если необходимо обновить или переустановить все пакеты, чтобы убедиться, что все установлено правильно, то это путь, больше похожий на вариант №1, чем на вариант №3.
ОБНОВЛЕНИЕ 2: Ответы на другой пост SO содержат несколько хороших идей о том, как избежать этой проблемы при обновлении. Я не обновляю R, но предложение Дирка Эддельбюттеля не устанавливать пакеты в дереве файлов R является разумным.
Объединение ответа здесь, с этим ответом: https://community.rstudio.com/t/reinstalling-packages-on-new-version-of-r/7670/4
я нашел простое решение, которое работало:
lib_loc <- "C:/Users/apdev/Documents/R/win-library/3.3"
to_install <- unname(installed.packages(lib.loc = lib_loc)[, "Package"])
to_install
remove.packages(to_install, lib="C:/Users/apdev/Documents/R/win-library/3.3")
install.packages(pkgs = to_install, lib="C:/Program Files/R/R-3.6.1/library")