#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, содержащий все системные зависимости.