Подтвердить что ты не робот

Автономная установка пакета R и зависимостей

Предположим, мне нужно установить несколько пакетов на машине (Linux), у которой нет подключения к Интернету. Скажем, что я скачал копию крана и сжег его на DVD, который я привожу в автономное место:

wget ftp://cran.r-project.org/pub/R/src/contrib/*.tar.gz

Я могу даже добавить файл PACKAGES, содержащий обзор всех исходных пакетов и их зависимостей:

library(tools)
write_PACKAGES()

Как я могу использовать этот автономный режим для установки исходного пакета таким образом, чтобы зависимости были разрешены и установлены из локальных файлов? Например, кто-то хочет установить пакет ggplot2, который имеет довольно глубокую структуру зависимостей. Предположим, что исходный пакет ggplot2 и все его зависимости доступны в виде исходных пакетов в текущем рабочем каталоге. Если я это сделаю:

install.packages("ggplot2_0.9.1.tar.gz", repos=NULL)

Это приводит к ошибке, потому что зависимости не разрешены вообще. Альтернативно:

install.packages(list.files(pattern="*.tar.gz"), repos=NULL)

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

Я просмотрел available.packages и contrib.url, но я просто не могу найти пример установки исходного пакета из локального файла, включая его зависимости.

4b9b3361

Ответ 1

Правильный ответ дал Джошуа Ульрих в комментарии к вопросу:

Ключ префикс аргумента либо repos, либо contriburl с помощью file://. Таким образом, в Unixy-системах можно было бы:

install.packages("ggplot2", contriburl="file:///path/to/packages/")

Предполагается, что все необходимые исходные пакеты, а также индексный файл PACKAGES доступны в /path/to/packages. Если файл PACKAGES отсутствует, его следует сгенерировать сначала, используя:

library(tools)
write_PACKAGES("/path/to/packages/")

который будет генерировать индекс всех исходных пакетов, найденных в этом каталоге. Обратите внимание, что в этом примере позади префикса file: имеется 3 слэша. Третий слэш указывает путь относительно корня файловой системы.

Разница между аргументами repos и contriburl заключается в том, что repos добавит другой /src/contrib к указанному пути, так как обычно это где исходные пакеты находятся на официальном зеркале репозитория CRAN.

Ответ 2

Ссылаясь на ответ выше, если установка выполняется в Windows, тогда write_PACKAGES() создает два файла: PACKAGES и PACKAGES.gz в каталоге '/path/to/packages/', где размещаются все файлы zip. Файл PACKAGES.gz должен быть удален до того, как функция install.packages() правильно сможет прочитать файл одиночного ПАКЕТА, иначе появится сообщение "Невозможно открыть сжатый файл".

Ответ 3

У меня были те же проблемы во время автономной установки. Как-то это не работало по командной строке.

Я загрузил, извлек все зависимости (сохранял проверку минимальной версии) и вставлял папки в папку библиотеки. Таким образом, моя проблема решена.