ПРИМЕЧАНИЕ в R CRAN Check: репозиторий не установлен, поэтому циклическая проверка зависимостей пропущена.

Начиная с R 3.1.0 я получаю следующую проверку R:

* checking package dependencies ... NOTE
  No repository set, so cyclic dependency check skipped

Я попробовал этот совет: https://twitter.com/phylorich/status/431911660698083328

Не идти. Я поместил строку options(repos="http://cran.rstudio.com/") в .Rprofile в корневом каталоге пакета. Все равно получите записку.

Также раздел 1.3.1 документа Написание расширений R. указывает:

Some Windows users may need to set environment variable R_WIN_NO_JUNCTIONS 
to a non-empty value. The test of cyclic declarations33in DESCRIPTION 
files needs repositories (including CRAN) set: do this in ~/.Rprofile.

Возможно, это результат set environment variable R_WIN_NO_JUNCTIONS? Если да, то как я могу это сделать? Любые другие возможные причины примечания или предлагаемых исправлений?


person Tyler Rinker    schedule 19.04.2014    source источник
comment
Вы говорите, что у вас есть .Rprofile в корневом каталоге пакета — вы устанавливаете параметр repos из .Rprofile в своем домашнем каталоге? Вы можете проверить, что это, запустив Sys.getenv("R_USER")   -  person Dason    schedule 19.04.2014
comment
@Dason Я закинул .Rprofile в свой домашний каталог, установив options в repos. Это избавляет от ПРИМЕЧАНИЕ. Можете ли вы бросить это как ответ? Есть ли способ установить repos без необходимости помещать .Rprofile в мой домашний каталог, то есть установить что-то в каталоге пакета, который установит repos?   -  person Tyler Rinker    schedule 19.04.2014
comment
Переменная окружения для repos была бы неплохой.   -  person sgibb    schedule 24.04.2014
comment
Добавление repos с параметрами в мой .Rprofile не исправляет это для меня (при проверке с помощью devtools::check())...   -  person cboettig    schedule 12.07.2014
comment
Я создал файл file.create(".Rprofile") в Sys.getenv("R_USER") этой директории и добавил в него строку cat("options(repos = c(CRAN=\"http://cran.r-project.org\"))", file = ".Rprofile") но это не решило проблему.   -  person Marcin Kosiński    schedule 17.09.2014
comment
@MarcinKosinski На самом деле физически (а не программно) создайте файл в корневом каталоге с именем .Rprofile. Добавьте строку options(repos = c(CRAN=\"http://cran.r-project.org\"). Запустите проверки.   -  person Tyler Rinker    schedule 31.10.2014
comment
Это должно быть options(repos = c(CRAN="http://cran.r-project.org"))   -  person Tyler Rinker    schedule 11.09.2015


Ответы (2)


От написания расширений R

Для проверки циклических объявлений в файлах DESCRIPTION требуется набор репозиториев (включая CRAN): сделайте это в ~/.Rprofile, например,

options(repos = c(CRAN="http://cran.r-project.org"))

Рекомендуется

Пользователь должен дважды проверить, находится ли его .Rprofile у него дома и содержит ли он указанную опцию.

# in R session (any platform)
# where is my profile?
file.path(Sys.glob("~"),".Rprofile")
# is it there?
file.exists(file.path(Sys.glob("~"),".Rprofile"))

Или из сеанса R с использованием дополнительного пакета:

library(pathological)
r_profile()

Пользователь должен дважды проверить, не вложена ли запись опции в условие IF, как в следующем коде:

# this will not help for R CMD check --as-cran
if(interactive()) {
options(repos = c(CRAN="http://cran.r-project.org"))
}

Пробный запуск для любой платформы

Вот скрипт R, который готовит простой временный пакет R для тестирования, помогая быстрее найти, что не так в вашем локальном использовании. Этот подход помог мне определить, что не так в моем файле .Rprofile, и, как правило, может помочь настроить рабочее начальное состояние. В лучшем случае проверка должна показать только 1 ПРИМЕЧАНИЕ о новой отправке.

  1. сначала скопируйте/вставьте код и введите его в свой сеанс R (предпочтительно --vanilla)
  2. затем запустите команду, напечатанную сценарием, чтобы проверить тестовый пример --as-cran.

Пример

# for example
R --vanilla -f makePackage.R
# here the resulting package path is as below
R --no-site-file CMD check --as-cran /tmp/pkgtest
# now see the check log

Если ваш .Rprofile не существует, он будет создан, и в любом случае в конец файла будет помещена одна новая строка.

Скрипт makePackage.R

# makePackage.R
# makes simple package for playing with check --as-cran

# copy this content to file makePackage.R
# then source it into your R --vanilla session

name <- "pkgtest"

#
# prepare and adjust package template
#

tempbase <- dirname(tempdir())
e <- new.env()
path <- dirname(tempdir())

# make simple package in path
e$fu <-  function(){"Hello"}
package.skeleton(name=name,force=T,path=path,environment=e)
nil <- file.remove(
    file.path(path,name,'Read-and-delete-me'),
    file.path(path,name,'man',paste0(name,'-package.Rd'))
    )

# adjust DESCRIPTION
D <- readLines(file.path(path,name,"DESCRIPTION"))
D[grepl("^Title: ",D)] <- "Title: Testing Skeleton"
D[grepl("^Author: ",D)] <- "Author: John Doe"
D[grepl("^Description: ",D)] <- "Description: Checking --as-cran check."
D[grepl("^Maintainer: ",D)] <- "Maintainer: John Doe <[email protected]>"
D[grepl("^License: ",D)] <- "License: GPL (>= 2)"
write(D,file.path(path,name,"DESCRIPTION"))

# make fu.Rd
write(
"\\name{fu}\\alias{fu}\\title{Prints}\\description{Prints}
\\usage{fu()}\\examples{fu()}",
file.path(path,name,'man','fu.Rd'))

#
# ensure that .Rprofile contains repos option 
# add fresh new line et the end of .Rprofile
# 

userRp <- file.path(Sys.glob("~"),".Rprofile")
write("options(repos = c(CRAN='http://cran.r-project.org'))",file=userRp, append=TRUE)

#
# print final message
#

msg <- sprintf("
Your test package was created in %s,
under name %s,
your user .Rprofile in %s was modified (option repos),
now check this test package from command line by command:

R --no-site-file CMD check --as-cran %s
", path, name,  userRp, file.path(path,name) 
)

# now is time to check the skeleton
message(msg)

Проверка пакета

# replace package-path by the path adviced by the sourcing the script above
R --no-site-file CMD check --as-cran package-path

Существует профиль пользователя и профиль сайта, в приведенном выше подходе вы обходите профиль сайта (на втором шаге), используя параметр --no-site-file для параметра каркаса пакета.

Ошибки PDF

Вы можете столкнуться с ошибками, связанными с PDF и латексом, которые, скорее всего, вызваны отсутствием или неполной установкой латекса. Вы можете использовать опцию --no-manual, чтобы пропустить тесты PDF.

R --no-site-file CMD check --no-manual --as-cran /tmp/pkgtest
person Petr Matousu    schedule 30.07.2014
comment
Это также работало в Mac OS X. Чтобы была только 1 ошибка: (1) Удалите точку в заголовке (2) Измените дату на текущую дату. В моем случае мне пришлось установить MacTex (вероятно, по другой причине), что я и сделал отсюда: tug .org/mactex/mactex-download.html - person Picarus; 18.02.2016

Ответ выше работает только для Linux. В Windows мне пришлось использовать другой метод. Когда я попытался собрать и проверить свой новый пакет в R 3.2.0 в Windows 7, я получил ту же ошибку:

checking package dependencies ... NOTE
No repository set, so cyclic dependency check skipped

Я попытался создать файл .Rprofile в корневом каталоге моего нового пакета, но это не сработало. Вместо этого мне пришлось пойти к:

C:\Program Files\R\R-3.2.0\etc

и отредактируйте файл:

Rprofile.site

В файле Rprofile.site я добавил предложенную строку:

options(repos = c(CRAN="http://cran.r-project.org"))

После того, как я отредактировал файл Rprofile.site, ПРИМЕЧАНИЕ «Репозиторий не установлен, поэтому циклическая проверка зависимостей пропущена», наконец, исчезла.

person jirikadlec2    schedule 29.04.2015
comment
В моем комментарии говорится о домашнем каталоге, в данном случае это ваш домашний каталог. Обычно он находится в каталоге, в котором будет собран ваш пакет и в который будет выводиться tar-архив. - person Tyler Rinker; 29.04.2015
comment
Я получаю сообщение об отказе в доступе при попытке адаптировать Rprofile.site - person Ruben; 01.02.2016