Пакет, указанный в разделе зависит, не устанавливается при перестройке пользовательского пакета R
Я перестраиваю собственный R-пакет, в котором, помимо других библиотек, есть RcppArmadillo в строке Depends файла DESCRIPTION.
Я бегу R 3.5.1. Когда я перестраиваю пакет в RStudio, я получаю сообщение об ошибке:
ERROR: dependency ‘RcppArmadillo’ is not available for package 'custom package name'
Согласно книге R Packages, пакеты в разделе "Зависит от импорта / должны быть установлены", когда пакет перестраивается.
1 ответ
Решение
использование devtools::install()
вместо.
объяснение
По данным сайта RStudio,
Команда Build and Reload выполняет несколько последовательных шагов, чтобы обеспечить чистый и правильный результат:
1. Загружает любую существующую версию пакета (включая общие библиотеки, если это необходимо).
2. Сборка и установка пакета с использованием R CMD INSTALL.
3. Перезапускает базовый R-сеанс, чтобы обеспечить чистую среду для повторной загрузки пакета.
4. Перезагружает пакет в новом сеансе R, выполняя библиотечную функцию.
В то время как devtools::install()
установит зависимости для вас - от help("install.packages")
:
Использует R CMD INSTALL для установки пакета. Также будет пытаться установить зависимости пакета от CRAN, если они еще не установлены.
(выделение добавлено) это не относится к R CMD INSTALL
один (см ?INSTALL
от R или R CMD INSTALL --help
из командной строки и т. д. - нет упоминания об установке необходимых зависимостей).
Итак, кажется, язык
Фактически, каждый раз, когда ваш пакет установлен, эти пакеты, если они еще не установлены, будут установлены на вашем компьютере (devtools::load_all() также проверяет, установлены ли эти пакеты).
от R пакетов Хэдли является немного определенным; это не относится к использованию R CMD INSTALL
(которую, очевидно, использует функция построения RStudio), но она работает для devtools::install()
, Это вопрос личного вкуса, но, честно говоря, я настоятельно рекомендую использовать devtools
в вашем процессе разработки пакета.
пример
I removed the package rbenchmark
from my system via
remove.packages("rbenchmark")
then created a dummy package by
devtools::create("SOexample", rstudio = FALSE)
and edited the DESCRIPTION to put rbenchmark
in Imports, so that SOexample
зависит от этого. I added the following code in R/hello_world.R
:
hello_world <- function() print("Hello, world!")
Я старался R CMD INSTALL
, but got the error
*installing to library '/home/duckmayr/R/x86_64-pc-linux-gnu-library/3.5'
ERROR: dependency 'rbenchmark' is not available for package 'SOexample'
*removing '/home/duckmayr/R/x86_64-pc-linux-gnu-library/3.5/SOexample'
But, if I try devtools::install()
:
> devtools::install("SOexample/")
Installing SOexample
trying URL 'https://cloud.r-project.org/src/contrib/rbenchmark_1.0.0.tar.gz'
Content type 'application/x-gzip' length 5093 bytes
==================================================
downloaded 5093 bytes
Installing rbenchmark
'/usr/lib/R/bin/R' --no-site-file --no-environ --no-save --no-restore --quiet \
CMD INSTALL '/tmp/RtmpA0NOMe/devtools723832018149/rbenchmark' \
--library='/home/duckmayr/R/x86_64-pc-linux-gnu-library/3.5' --install-tests
* installing *source* package ‘rbenchmark’ ...
** package ‘rbenchmark’ successfully unpacked and MD5 sums checked
** R
** demo
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (rbenchmark)
'/usr/lib/R/bin/R' --no-site-file --no-environ --no-save --no-restore --quiet \
CMD INSTALL '/home/duckmayr/SOexample' \
--library='/home/duckmayr/R/x86_64-pc-linux-gnu-library/3.5' --install-tests
* installing *source* package ‘SOexample’ ...
** R
** byte-compile and prepare package for lazy loading
** help
No man pages found in package ‘SOexample’
*** installing help indices
** building package indices
** testing if installed package can be loaded
* DONE (SOexample)