Предположим, мне нужно установить ряд пакетов на машину (Linux), не имеющую подключения к Интернету. Допустим, я загрузил копию cran и записал ее на 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
, но не могу найти пример установки исходного пакета из локального файла, включая его зависимости.