Копирование старых пакетов R с одного сервера Linux и установка их на новый сервер - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь скопировать пакеты R из каталога на одном сервере Linux и установить их на другом.Я начал с написания скрипта, который будет перебирать список всех необходимых мне R-пакетов и устанавливать их.Это работало для большинства пакетов, но, поскольку я вынужден использовать R 3.0.3, значительное количество пакетов недоступно для этой версии R. Это означает, что R пытался установить самые последние версии этих конкретных пакетов.

Я пытаюсь найти решение, которое не требует от меня прохождения каждого пакета, поиска версии, на которой мы работаем на старом сервере, затем перехода на CRAN и загрузки архивированного файла .tar.gz.

В идеале я хотел бы пройтись по каталогу пакетов R, превратить их все в файлы .tar.gz, переместить эти файлы на новый сервер и установить их таким образом.Тем не менее, я столкнулся со следующей проблемой, когда попытался «собрать» один из этих пакетов.

R CMD build car

Read 1 item
* checking for file ‘car/DESCRIPTION’ ... OK
* preparing ‘car’:
* checking DESCRIPTION meta-information ... OK
Warning in file(con, "r") :
  cannot open file 'man': No such file or directory
Error in file(con, "r") : cannot open the connection
 ERROR
computing Rd index failed

Я попробовал другой, используя devtools::build('abind'), но это также не удалось с теми же ошибками, описанными выше.

Должен ли я изменить свой подход или что-то не так с тем, что я делаю?Любая помощь в этом будет оценена.

1 Ответ

1 голос
/ 15 мая 2019

Ваш общий подход не будет работать: tar.gz файлы содержат исходный код пакета, но не все из них устанавливаются при установке пакета, поэтому вы не можете воссоздать файл tar.gz из установленных файлов. .

Что может сработать, если вы не хотите работать с такой древней версией R, это использовать «машину времени» Microsoft CRAN (https://mran.microsoft.com/timemachine),, но я думаю, что это восходит только к R 3.2.3.

Копирование библиотеки может работать, но двоичные файлы этих файлов, вероятно, связаны с файлами системной библиотеки в определенных местах, поэтому я бы не стал доверять ее надежности.

Я думаю, что вашим лучшим вариантом было бы обновить R до текущего выпуска (или, возможно, 3.5.3, последнего выпуска патча предыдущей серии), а затем просто установить текущие версии пакетов, которые вы хотите.

Если это невозможно по какой-то причине, то у вас, скорее всего, не будет выбора, кроме как установить версии, соответствующие тем, которые вы установили. По крайней мере, вы можете найти версии автоматически: функция installed.packages() возвращает матрицу с именем пакета в столбце "Package" и его версию в столбце "Version". Запустите это на старой системе, затем скомпилируйте их на новой системе, используя функцию remotes::install_version() (которая утверждает, что работает на R до 3.0.0, но я уверен, что в последнее время она там не тестировалась).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...