Автономная установка пакета R и зависимостей
предположим, мне нужно установить несколько пакетов на машине (Linux), которая не имеет подключения к интернету. Предположим, что я загрузил копию cran и сжег ее на DVD, который я привожу в автономное местоположение:
wget ftp://cran.r-project.org/pub/R/src/contrib/*.tar.gz
Я даже могу добавить файл пакетов, содержащий обзор всех исходных пакетов и их зависимостей:
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
но я просто не могу найти пример установки исходного пакета из локального файла, включая его зависимости.
3 ответа:
правильный ответ дал Джошуа Ульрих в комментарии к вопросу:
ключ является префиксом аргумента либо
repos
илиcontriburl
Сfile://
. Так что в системах Unixy можно было бы сделать:install.packages("ggplot2", contriburl="file:///path/to/packages/")
предполагается, что все необходимые исходные пакеты, а также индексный файл пакетов доступны в
/path/to/packages
. Если файл пакетов отсутствует, он должен быть создан сначала с помощью:library(tools) write_PACKAGES("/path/to/packages/")
который будет генерировать индекс всех пакеты исходного кода, найденные в этом каталоге. Обратите внимание, что в примере есть 3 Косых за
file:
префикс. Третья черта указывает путь относительно корня файловой системы.разницу между
repos
иcontriburl
аргумент заключается в том, чтоrepos
добавим еще/src/contrib
к указанному пути, так как обычно пакеты с исходным кодом находятся на официальном зеркале репозитория CRAN.
со ссылкой на ответ выше, если установка выполняется в Windows, то write_PACKAGES () генерирует два файла: пакеты и пакеты.gz в каталоге' /path/to/packages/', где размещаются все zip-файлы. Пакеты файлов.gz должен быть удален перед установкой.функция packages () правильно умеет читать файл lone PACKAGES иначе появляется ошибка "не удается открыть сжатый файл".