R CRAN检查中的注释:未设置存储库,因此跳过了循环依赖性检查 [英] NOTE in R CRAN Check: No repository set, so cyclic dependency check skipped

查看:177
本文介绍了R CRAN检查中的注释:未设置存储库,因此跳过了循环依赖性检查的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从R 3.1.0开始,我得到以下R检查:

As of R 3.1.0 I get the following R check:

* 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中.仍然得到笔记.

No go. I put the line options(repos="http://cran.rstudio.com/") in a .Rprofile in the package root directory. Still get the Note.

编写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的结果吗?如果是这样,我该怎么做?注释是否有其他可能的原因或建议的修复方法?

Is this possibly a result of the set environment variable R_WIN_NO_JUNCTIONS? If so how can I go about doing this? Any other possible causes of the note or suggested fixes?

推荐答案

来自编写R扩展

DESCRIPTION文件中循环声明的测试需要设置存储库(包括CRAN):例如,在〜/.Rprofile中进行此操作

The test of cyclic declarations in DESCRIPTION files needs repositories (including CRAN) set: do this in ~/.Rprofile, by e.g

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

推荐

用户应仔细检查自己的.Rprofile是否在他的家中,并且其中包含上述选项.

User should double check if his .Rprofile is in his home and that it contains the mentioned option.

# 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会话中使用额外的软件包:

Or from R session using extra package:

library(pathological)
r_profile()

用户应仔细检查选项条目是否未在IF条件下嵌套,如以下代码所示:

User should double check if the option entry is not nested in the IF condition, like in the following code:

# 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条注释.

Here is R script preparing easy temporary case of R package for testing, helping to faster find what is going wrong in your local usage. This aproach helped myself to locate what was wrong in my .Rprofile file and generally can help to set up working initial state. In best case, the check run should show only 1 NOTE about new submission.

  1. 首先复制/粘贴代码并在您的R会话中将其来源(--vanilla 最好)
  2. 然后运行脚本打印的命令以检查测试用例--as-cran.
  1. first copy/paste the code and source it in your R session (--vanilla preferably)
  2. then run the command printed by the script to check test case --as-cran.

示例

Example

# 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不存在,则会创建该文件,并在任何情况下在文件末尾添加一行新行.

If your .Rprofile does not exist it will be created and one new line placed at the end of file in any case.

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 <jdoe@doe.net>"
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选项绕过了站点配置文件(第二步).

There is user profile and site profile, in the approach above you bypasses site profile (in second step) by using --no-site-file option for package skeleton option.

PDF错误

您可能会遇到与PDF和乳胶相关的错误,这很可能是由于乳胶安装缺失或不完整引起的.您可以使用--no-manual选项跳过PDF测试.

You can experience PDF and latex related errors, caused very likely by missing or not complete latex instalation. Ycan use --no-manual option to skip PDF tests.

R --no-site-file CMD check --no-manual --as-cran /tmp/pkgtest

这篇关于R CRAN检查中的注释:未设置存储库,因此跳过了循环依赖性检查的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆