Зависимости пакета R не установлены из Additional_repositories (пересмотрено)

Я пытаюсь подготовить пакет для отправки в CRAN. В моем файле DESCRIPTION я включаю пакеты, не относящиеся к CRAN, в аргументы «Зависит» и «Предлагает». Чтобы сообщить R, где найти пакеты, не относящиеся к CRAN, я включаю аргумент Additional_repositories; и я включаю функцию .onLoad в начало моей программы (то есть в 'zzz.R'). Я могу собрать и проверить (--as-cran) в RStudio без предупреждений, замечаний или ошибок, если присутствуют все пакеты Depends и Suggests. Затем я использую devtools :: build () для локального создания файла .tar.gz.

Чтобы проверить успешную локальную установку, я удаляю со своего компьютера пакеты, не относящиеся к CRAN, и пытаюсь установить созданный мной файл .tar.gz. Затем я получаю сообщение:

ERROR: dependency 'smwrQW' is not available for package 'baytrends' 

Я прочитал

К сожалению, вышеупомянутая ошибка сохраняется. Я уверен в URL-адресе, который я использую, поскольку приведенная ниже строка install.package работает при независимом запуске.

install.packages('smwrQW',repos=c("http://owi.usgs.gov/R"),dependencies = TRUE)

Соответствующие биты файла DESCRIPTION и zzz.R приведены ниже:

ОПИСАНИЕ:

Date: 2017-03-15
Depends:
    R (>= 3.2.0),
    lubridate,
    mgcv,
    smwrQW
License: GPL-3
LazyData: TRUE
RoxygenNote: 6.0.1
Suggests:
    dataRetrieval,
    devtools,
    fitdistrplus,
    knitr,
    nlme,
    pander,
    plyr,
    rmarkdown,
    smwrBase,
    smwrGraphs,
    smwrStats,
    testthat
Additional_repositories: http://owi.usgs.gov/R
VignetteBuilder: knitr

zzz.R:

.onLoad <- function(libname = find.package("baytrends"), pkgname = "baytrends"){

  repos = getOption("repos")
  repos["USGS"] = "http://owi.usgs.gov/R"
  options(repos = repos)
  invisible(repos)

  # declaration of global variables (https://stackoverflow.com/questions/9439256)
  if(getRversion() >= "2.15.1")
    utils::globalVariables(c("begin", "methodsList"))
  invisible()

}

.onAttach <-  function(libname = find.package("baytrends"), pkgname = "baytrends"){
  packageStartupMessage("This software program is preliminary or provisional and is subject to revision. ")
}

person greengrass62    schedule 15.03.2017    source источник


Ответы (1)


Вы не можете иметь пакеты из нестандартных репозиториев в Depends: или Imports :.

Вы можете добавить их в предложениях:

Это делают несколько пакетов; вы можете посмотреть на ураган, который использует это, чтобы сделать "слишком большим для -CRAN 'пакет данных hurricanexposuredata, доступный на репозиторий, созданный с помощью drat.

Поэтому вы должны переместить пакет smwrQR в список предложений: и затем протестировать его.

У нас с Брук есть черновик (на рассмотрении) по этому поводу, который мы могли бы прислать вам, если вы напишите нам - в нем все подробно описано больше, чем можно было бы в кратком ответе.

person Dirk Eddelbuettel    schedule 15.03.2017
comment
Спасибо. Я переместил smwrQW в раздел «Предлагает:» и получил ошибку «Не требуются зависимости пространства имен: smwrQW». Я просмотрел stackoverflow.com/questions/13085481/ и smwrQW перемещен в Imports:. это исправило ошибку сборки, но оставило меня на том же месте, что и исходная публикация. - person greengrass62; 16.03.2017
comment
Вам также необходимо удалить его из NAMESPACE. Без зависимостей, без импорта, без NAMESPACE - только предложения. - person Dirk Eddelbuettel; 16.03.2017
comment
Я создал еще несколько ошибок. Перезапустим тестовый пакет и выполним ваши рекомендации. - person greengrass62; 16.03.2017