Извлеките .tar.gz файлы для списка указанных пакетов

#r

Вопрос:

Я только что обновил версию R на защищенном (без Интернета) сервере. Теперь я хотел бы перенести все мои предыдущие пакеты в библиотеку в моей новой версии R. Конечно, эти пакеты нуждаются в обновлении и не будут запускаться в моей новой версии R.

Мне приходится устанавливать новые версии из исходного кода, так как сервер не имеет доступа в Интернет. У меня есть список пакетов, которые мне нужны, и я могу их скачать .tar.gz файлы на мой локальный компьютер, а затем перенесите их на сервер. Но сначала мне нужно получить .tar.gz файлов, и их сотни, если включить все зависимости.

Я ищу простое решение, чтобы получить все это .tar.gz файлы из CRAN без необходимости посещать сотни веб-страниц и загружать вручную. Существует ли существующий метод в R для извлечения .tar.gz файлы? Или кто-нибудь может придумать для меня более простой способ сделать это?

Спасибо!

Ответ №1:

Вы можете использовать пакет miniCRAN.

 library(miniCRAN)
mypackages <- rownames(installed.packages())
makeRepo(mypackages, path = "path/to/myrepo", type = "source", Rversion = "4.1")
 

Затем вы получите хранилище типа CRAN в файле path/to/myrepo, содержащее tar.gz файлы.

Ответ №2:

Вот как установить пакеты R на машину без доступа в Интернет:

Вариант 1

Вы можете скачать .tar.gz файлы пакетов R из CRAN, например, с использованием в bash:

 wget https://cran.r-project.org/src/contrib/dplyr_1.0.7.tar.gz
 

Затем установите пакет на машину без доступа в Интернет:

 install.packages("dplyr_1.0.7.tar.gz")
 

Вариант 2

Просто используйте install.packages на компьютере с доступом в Интернет в сеансе R с новой версией (например, 4.1). Затем вы можете просто скопировать каталог ~/R/x86_64-pc-linux-gnu-library/4.1/ на новый сервер без доступа в Интернет, используя также R 4.1.

Вариант 3

Пожалуйста, обратите внимание, что приведенные выше решения включают только код R. Некоторые пакеты (например sf , для анализа пространственных данных) также зависят от других системных зависимостей (здесь GEOS или GDAL). Тогда я рекомендую использовать R внутри контейнеров docker (например, rocker/geospatial). Контейнеры Docker и их изображения могут быть экспортированы в один шар tar, содержащий все системные зависимости.