本地R CMD-Check无错,CRAN提交后GitHub Actions报5个错误求助
排查CRAN提交时
r-lib/actions/check-r-package@v2错误的步骤 1. 深挖工作流日志的隐藏错误
GitHub Actions工作流页面没显示"error"不代表没有细节,按以下操作:
- 进入对应的工作流运行,展开每个
check-r-package步骤的所有折叠日志,包括Setup、Install dependencies、Check package等子步骤 - 搜索日志中的
ERROR、WARNING、NOTE关键词,尤其是CRAN校验严格要求的内容(比如未声明的依赖、文档格式问题、平台特定代码) - 注意日志中是否有超时、依赖安装失败的隐性提示,比如某些系统库在GitHub的测试镜像中缺失
2. 对齐CRAN的测试环境
本地测试通过不代表CRAN环境一致,要模拟CRAN的校验条件:
- 使用
devtools::check(cran = TRUE)本地运行CRAN标准校验,开启所有严格检查项 - 检查你的包是否依赖了未在
DESCRIPTION中声明的系统库(比如Linux下的libcurl、libxml2),GitHub Actions的测试容器可能默认没装这些 - 确认包中是否有平台特定的代码(比如Windows/Linux专属函数),而你本地只测了其中一种系统
3. 针对r-lib/actions/check-r-package@v2的特定排查
这个action的v2版本有一些默认配置可能和你的包冲突:
- 检查工作流文件中是否指定了正确的R版本,CRAN当前使用的R版本可能和你本地不同(比如最新稳定版vs开发版)
- 尝试在工作流中添加
args: "--no-manual --no-build-vignettes"参数,排除 vignette 构建或手册生成的问题 - 查看该action的官方配置说明,确认是否有遗漏的配置项,比如需要显式安装的系统依赖
4. 复现GitHub Actions的测试环境
如果以上步骤没找到问题,本地复现GitHub的测试容器:
- 使用Docker拉取
rocker/r-ver:latest镜像,模拟Linux测试环境 - 在容器内安装你的包并运行
R CMD check,对比GitHub Actions的日志输出
5. 检查CRAN的自动反馈邮件
CRAN提交后通常会发送详细的校验邮件,里面会包含具体的错误信息,不要只依赖GitHub Actions的日志,优先查看邮件内容
内容的提问来源于stack exchange,提问作者Russ Conte
相关产品推荐
相关产品推荐

