Установить пакетную зависимость, у которой нет бинарной версии - PullRequest
2 голосов
/ 13 февраля 2020

Я пытаюсь настроить проект packrat , но он продолжает сбой, потому что один из пакетов (установленный из GitHub) зависит от пакета, который в настоящее время не имеет двоичной версии в CRAN. Это сообщение об ошибке, которое я получаю:

> remotes::install_github("BroVic/raampGBV")
Downloading GitHub repo BroVic/raampGBV@master
Skipping 1 packages not available: naijR
Installing 114 packages: DBI, RSQLite, ... 
Installing packages into ‘C:/Users/Admn/project/packrat/lib/x86_64-w64-mingw32/3.6.2’
(as ‘lib’ is unspecified)

   package ‘naijR’ is available as a source package but not as a binary


  There are binary versions available (and will be
  installed) but the source versions are later:
        binary source
digest  0.6.23 0.6.24
stringi  1.4.4  1.4.5
callr    3.4.1  3.4.2
ps       1.3.0  1.3.1

Error: Failed to install 'raampGBV' from GitHub:
  (converted from warning) package ‘naijR’ is not available (as a binary package for R version 3.6.2)

Опять же, для ясности, raampGBV существует только на GitHub (это пакет c, определяемый проектом), в то время как naijR на CRAN. Когда я пытаюсь установить raampGBV самостоятельно, исходный пакет naijR загружается и устанавливается из CRAN без каких-либо проблем. Но при попытке через packrat ничего не получается.

1 Ответ

2 голосов
/ 13 февраля 2020

Согласно NEWS для R 3.6.2:

Для установки двоичного пакета Windows или Ma c OS X, install.packages () проверит, доступен ли исходный пакет в тех же репозиториях, и сообщите, если это более поздняя версия или есть пакет с исходным кодом, но нет двоичного пакета. Эту проверку можно отключить: см. Страницу справки.

После изучения раздела Двоичные пакеты в ?install.packages() очевидно, что используется параметр type контролировать поведение, указанное в цитате выше. Значением по умолчанию для type в install.packages является getOption("pkgType"), которое в моем случае вернуло "win.binary". Вот как проблема была исправлена:

oldOpt <- getOption("pkgType")
options(pkgType = "both")

remotes::install_github("BroVic/raampGBV")

options(pkgType = oldOpt)

Теперь зависимости правильно установлены в библиотеке packrat.

...