• R语言已解决
  • R 包提交到 CRAN 未通过自动检查但报告里全是 OK 是怎么回事

最近更新了一个包到 CRAN,得到的回复说未通过自动检查:


Dear maintainer,

package rarestR_1.0.3.tar.gz does not pass the incoming checks automatically, please see the following pre-tests:
Windows: https://win-builder.r-project.org/incoming_pretest/rarestR_1.0.3_20240920_034521/Windows/00check.log
Status: OK
Debian: https://win-builder.r-project.org/incoming_pretest/rarestR_1.0.3_20240920_034521/Debian/00check.log
Status: OK

Last released version's CRAN status: OK: 13
See: https://CRAN.R-project.org/web/checks/check_results_rarestR.html

CRAN Web: https://cran.r-project.org/package=rarestR

Please fix all problems and resubmit a fixed version via the webform.
If you are not sure how to fix the problems shown, please ask for help on the R-package-devel mailing list:
https://stat.ethz.ch/mailman/listinfo/r-package-devel
If you are fairly certain the rejection is a false positive, please reply-all to this message and explain.

More details are given in the directory:
https://win-builder.r-project.org/incoming_pretest/rarestR_1.0.3_20240920_034521/
The files will be removed after roughly 7 days.

No strong reverse dependencies to be checked.

Best regards,
CRAN teams' auto-check service


但我从这几个报告里都没发现问题,特别是所有操作系统上检查报告的总结表都显示OK。

哪位高人能指点一下?

另外附带个小问题:这个包附带了 vignette,从 GitHub 安装时需要设定 build_vignettes = TRUE 才能在安装后本地查看 vignette:

remotes::install_github('pzhaonet/rarestr', build_vignettes = TRUE)
library(rarestR)
vignette('rarestR')

我不记得别的包也这样过,所以我的问题是,如果提交到 CRAN,那么用 install.packages() 能成功安装 vignette 吗?如果不能,那么我应该在哪里修改?

包的repo是:https://github.com/pzhaonet/rarestR

谢谢!

又及:有没有可能上述两个问题其实是同一个bug导致的?因为上一个版本没有 vignette 时一切都好好的,而我又是第一次做 vignette。

    vignettes里需要ggplot2,但是DESCRIPTION里并没有对这个依赖的说明,可能是这个原因?

      fenguoerbian 这是 GitHub 上自检出错的原因(我刚刚从 vignette 里删除了对 ggplot2 的调用),但不是 CRAN 上的原因。CRAN 上提交的是稍微旧一点的版本,其中的vignette 没有使用 ggplot2 或者额外的包。

      我遇到的问题简单来说就是 CRAN 上 log 看不出哪里有错,但自动回复的邮件里说未通过自动检查。

        dapengde 目测只是 CRAN 的自动邮件回复昏了头,冤枉好人。以后遇到这种情况可以直接回复邮件表示一脸懵圈,通常会有真人查看邮件并放行。

        dapengde 我不记得别的包也这样过,所以我的问题是,如果提交到 CRAN,那么用 install.packages() 能成功安装 vignette 吗?如果不能,那么我应该在哪里修改?

        你不用做任何事情。提交的包是 R CMD build 编出来的,这个过程会自动编 vignette。你说的 remotes::install_github() 那是它自身的问题,当初设计者是为了默认更快速地安装包(vignette 需要花更多时间,所以默认被省略了)。其实这问题在 litedown 出世之后也不是什么大问题了,它编起来贼快,只不过在若干年前尚需要 LaTeX / Pandoc,那时候只能慢了。

        要避开这个问题也容易,那就是启用 r-universe.dev,这相当于一个自己的迷你 CRAN,它会每小时检查你的库,若有更新,就会重新编译你的包,并发布 Windows/Linux/macOS/WebAssembly 等版本的包,要多厉害有多厉害。用户直接用 install.packages(..., repos = 'https://username.r-universe.dev') 安装你的包就好了,不需要操心 vignette 问题。

          yihui 居然还能这样冤枉好人……看来我是高估天庭了……

            dapengde 我几乎每次提交 knitr 或 rmarkdown 都会“蒙冤”,需要手动解释,不过你这种情况我倒是第一次听说。

              yihui 看来蒙冤还是没习惯。果然,我在没做任何事情(连喊冤信都没发)的情况下收到了第二封信:

              Sorry, a problem on the check system caused the wrong decision. On its way to CRAN now.

              然后就发现成功更新了。