Установка пакетов R из локального репо (все файлы .tar.gz загружены туда)

Доброе утро из Австралии,

Поскольку наши компьютеры на работе не имеют доступа в Интернет, я попросил нашего ИТ-менеджера загрузить все пакеты R и разместить их в общей сетевой папке. С тех пор я перенес эти 4 ГБ пакетов в свой локальный каталог: E: /R-3.3.1/MyRPackages/src/contrib / ______. Tar.gz

Я хочу, чтобы мои пакеты были установлены в E: \ R-3.3.1 \ library

Я использую 64-разрядную версию Windows 7 Professional, а также RStudio и R версии 3.3.1 (21.06.2016).

Я просто хотел бы install.packages и установить пакет из моего локального репо, включая все его зависимости.

Я пробовал читать об этом и пробовал несколько перестановок команды install.packages, но мне не повезло. Например,

install.packages ("E: /R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz", dependencies = TRUE, repos = NULL)

ОШИБКА: зависимости 'httr', 'memoise', 'Whker', 'digest', 'rstudioapi', 'jsonlite', 'git2r', 'withr' недоступны для пакета 'devtools' * удаление 'E: / R- 3.3.1 / library / devtools 'Предупреждение в install.packages: running command' "E: /R-33~1.1/bin/x64/R" CMD INSTALL -l "E: \ R-3.3.1 \ library" " E: /R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz "'имел статус 1 Предупреждение в install.packages: установка пакета' E: /R-3.3.1/MyRPackages/src/ contrib / devtools_1.12.0.tar.gz 'имел ненулевой статус выхода

install.packages ("E: /R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz", dependencies = TRUE, repos = NULL, lib = "E: /R-3.3. 1 / библиотека ")

ОШИБКА: зависимости 'httr', 'memoise', 'Whker', 'digest', 'rstudioapi', 'jsonlite', 'git2r', 'withr' недоступны для пакета 'devtools' * удаление 'E: / R- 3.3.1 / library / devtools 'Предупреждение в install.packages: running command' "E: /R-33~1.1/bin/x64/R" CMD INSTALL -l "E: \ R-3.3.1 \ library" " E: /R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz "'имел статус 1 Предупреждение в install.packages: установка пакета' E: /R-3.3.1/MyRPackages/src/ contrib / devtools_1.12.0.tar.gz 'имел ненулевой статус выхода

install.packages ("E: /R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz", dependencies = TRUE, repos = NULL, lib = "E: /R-3.3. 1 / library ", type =" source ")

ОШИБКА: зависимости 'httr', 'memoise', 'Whker', 'digest', 'rstudioapi', 'jsonlite', 'git2r', 'withr' недоступны для пакета 'devtools' * удаление 'E: / R- 3.3.1 / library / devtools 'Предупреждение в install.packages: running command' "E: /R-33~1.1/bin/x64/R" CMD INSTALL -l "E: \ R-3.3.1 \ library" " E: /R-3.3.1/MyRPackages/src/contrib/devtools_1.12.0.tar.gz "'имел статус 1 Предупреждение в install.packages: установка пакета' E: /R-3.3.1/MyRPackages/src/ contrib / devtools_1.12.0.tar.gz 'имел ненулевой статус выхода


person AmericanTourist    schedule 02.11.2016    source источник
comment
Поскольку ваш repos=NULL, R не знает, где искать зависимости, вам также необходимо загрузить их и установить заранее. Есть ли причина, по которой вы не используете, например, install.packages("devtools")? ... извините, я должен был прочитать ваше первое предложение!   -  person rosscova    schedule 03.11.2016
comment
Поскольку вы используете Windows, вам следует установить двоичные файлы (zip-файлы). Это будет намного проще, чем компилировать пакеты из исходников. В качестве альтернативы вы можете просто разархивировать каждый zip-файл в e: /R-3.3.1/library.   -  person Hong Ooi    schedule 03.11.2016
comment
В настоящее время я распаковываю их в свою библиотеку, но когда я пытаюсь загрузить пакеты с помощью библиотеки ('package_name'), появляется сообщение Ошибка в библиотеке (бла): Blah не является допустимым установочным пакетом   -  person AmericanTourist    schedule 03.11.2016
comment
если у вас есть файлы, нельзя ли использовать library(tools); write_PACKAGES   -  person user20650    schedule 03.11.2016
comment
@ user20650 правильный. write_PACKAGES - (один из) инструментов, необходимых для создания инфраструктуры, которую R использует для установления зависимостей. Вы также можете ознакомиться с пакетом drat   -  person Ben Bolker    schedule 03.11.2016
comment
miniCRAN может быть именно тем, что вам здесь нужно, так как он пройдется по дереву зависимостей для каждого пакета.   -  person Dirk Eddelbuettel    schedule 03.11.2016
comment
Хорошо, так что после: write_PACKAGES (E: /R-3.3.1/MyRPackages/src/contrib/ Что мне делать дальше? Я немного расстроен, потому что понимаю, что люди пытаются помочь, но мне все это бросают У меня уже есть ВСЕ пакеты в "исходном" формате (.tar.gz) на моем компьютере.   -  person AmericanTourist    schedule 03.11.2016
comment
stackoverflow.com/questions/10807804 /   -  person user20650    schedule 03.11.2016


Ответы (2)


Немного продолжая ответ @ rosscova: существуют различные инструменты для определения полного рекурсивного набора зависимостей для пакета. Немного поработав, вы могли бы написать сценарий, чтобы захватить их все (действительно, очень вероятно, что это кто-то уже сделал, где-то уже ...)

## dependencies=TRUE 
devtools::package_deps("devtools",dependencies=TRUE)
(p <- package_deps("devtools",dependencies=TRUE))
Needs update -----------------------------
 package       installed available remote
 curl          1.2       2.2       CRAN  
 evaluate      0.9       0.10      CRAN  
 gmailr        NA        0.7.1     CRAN  
 hunspell      NA        2.1       CRAN  
 irlba         2.1.1     2.1.2     CRAN  
 openssl       0.9.4     0.9.5     CRAN  
 R6            2.1.3     2.2.0     CRAN  
 rmarkdown     1.0       1.1       CRAN  
 stringi       1.1.1     1.1.2     CRAN 

Это может немного ввести в заблуждение, потому что (?package_deps)

Метод print () определяет несоответствия (если есть) между локальной версией и версией CRAN каждого зависимого пакета;

это означает, что для получения полного списка зависимостей вам нужно напрямую вывести p$package:

p$package
 [1] "assertthat"    "base64enc"     "BH"            "BiocInstaller"
 [5] "bitops"        "brew"          "caTools"       "colorspace"   
 [9] "covr"          "crayon"        "curl"          "devtools"     
[13] "dichromat"     "digest"        "doParallel"    "evaluate"     
[17] "foreach"       "formatR"       "ggplot2"       "git2r"        
[21] "gmailr"        "gridBase"      "gtable"        "highr"        
[25] "htmltools"     "httr"          "hunspell"      "igraph"       
[29] "irlba"         "iterators"     "jsonlite"      "knitr"        
[33] "labeling"      "lazyeval"      "lintr"         "magrittr"     
[37] "markdown"      "memoise"       "mime"          "munsell"      
[41] "NMF"           "openssl"       "pkgmaker"      "plyr"         
[45] "praise"        "R6"            "RColorBrewer"  "Rcpp"         
[49] "registry"      "reshape2"      "rex"           "rmarkdown"    
[53] "rngtools"      "roxygen2"      "rstudioapi"    "rversions"    
[57] "scales"        "stringdist"    "stringi"       "stringr"      
[61] "testthat"      "tibble"        "whisker"       "withr"        
[65] "xml2"          "xtable"        "yaml"      
person Ben Bolker    schedule 02.11.2016

Без подключения к Интернету вам потребуется, чтобы ваш ИТ-менеджер также загрузил пакеты зависимостей и установил их в соответствующем порядке. Когда вы передаете repos = NULL функции install.packages, ей некуда искать эти зависимости.

Поскольку каждая из этих зависимостей может иметь собственные зависимости *, это, вероятно, в конечном итоге станет серьезной головной болью для вашего ИТ-менеджера (да, я тоже в Австралии!). Могу я предложить вам организовать временное подключение к Интернету на вашем компьютере? В противном случае, возможно, стоит взглянуть на Packrat, который (я сам раньше не использовал его) должен позволить вашему ИТ-менеджеру создать проект с необходимыми вам пакетами (включая их зависимости), встроенными в него. Затем вы можете использовать это для установки пакетов на свой компьютер.

  • например, пакет httr, от которого зависит devtools, сам зависит от mime, curl, openssl и _7 _... mime, а затем переходит в зависимость от _9 _... И мы идем по кроличьей норе ...
person rosscova    schedule 02.11.2016
comment
Хммм ... ну, на данный момент у меня загружены все 9000+ пакетов. Так что да, у него должны быть все эти зависимости. - person AmericanTourist; 03.11.2016