在哪里放置 CRAN 提交的包小插曲?

Posted

技术标签:

【中文标题】在哪里放置 CRAN 提交的包小插曲?【英文标题】:Where to put package vignettes for CRAN submission? 【发布时间】:2012-09-07 20:51:45 【问题描述】:

从Writing R Extensions Manual,我读到了

从 R 2.14.0 开始,Sweave 源的首选位置是 源包的子目录小插图,但为了兼容性 对于早期版本的 R,将在 如果小插图不存在,则 inst/doc。

但是,当我创建包源的vignettes 子目录时,当我运行devtools::check()R CMD check 时,我收到Package vignette(s) without corresponding PDF 的警告。如果我将小插图(.Rnw 和 .pdf)放在 inst/doc 中,则检查完成而没有投诉。我尝试在已安装打包的库中查看我的库,但没有看到任何名为 vignettes 的目录。我还应该使用已弃用的位置吗?

【问题讨论】:

【参考方案1】:

您将.Rnw 源代码放入vignettes/,但您错过了关键步骤;不要检查源代码树。预期的工作流程是构建源 tarball,然后检查该 tarball。构建 tarball 将创建小插图 PDF。

R CMD build ../foo/pkg
R CMD check ./pkg-0.4.tar.gz

例如,将从../foo/pkg 中的源代码构建一个源代码包tarball,在当前目录中创建.tar.gz 包,并附加包名称和版本。然后你在那个源包上运行R CMD check

如果您想为您构建小插图,请将其放入 vignettes/ 并构建源代码包。在未来某个日期,R Core 可能会移除从 inst/doc 构建小插图的功能,因此请立即前往建议的位置,避免直接查看源代码。

【讨论】:

【参考方案2】:

我也很难解释。

我认为您应该将.Rnw 文件放入vignettes/ 并将PDF(适当压缩)放入inst/doc/,如果您仔细阅读,这在技术上与文档一致。 (也就是说,它说 sources 应该放在 vignettes/ 中。我看不出它在哪里说了这么多话,你应该把相应的 PDF 放在 inst/doc/ 中,但它没有't not 说出来,这种解释似乎让R CMD check 高兴...)

解决方案在@GavinSimpson 的回答中(即,应该构建 tarball 然后检查它,而不是检查源目录本身)。 (我的两分钱是,如果 R-core 正式弃用(并最终删除)直接源代码检查而不是混淆我们所有的基础知识,这可能是最好的......)

【讨论】:

目的是让您不检查包源,而是检查 packaged 版本,即由R CMD build 操作创建的源包。 如果您将foo.Rnwfoo.pdf 放在vignettes/ 中,pdf 将自动传输到已安装的doc 目录。无需通过inst/doc 进行人工干预。 其他一些问题是因为许多软件包,包括我转换的一些软件包,都使用vignettes/ 我认为解决方案在@GavinSimpson 的回答中(即应该构建 tarball 然后检查它,而不是检查源目录本身)。问题:如果是这样,对于 R-core 来说,正式弃用(并最终删除)直接源代码检查而不是混淆我们所有的基础是否是一个更好的主意?

以上是关于在哪里放置 CRAN 提交的包小插曲?的主要内容,如果未能解决你的问题,请参考以下文章

我在哪里放置一个代码,当提交表单时,它将重定向到另一个页面? [复制]

上传文件时,我在哪里放置 Spinner 代码?

在哪里放置 add_action php 代码以连接到 Ninja Forms

未从 Additional_repositories 安装 R 包依赖项(重新访问)

在哪里放置加载和保存功能

在哪里放置更新核心数据功能(swift)