R包开发:如何指定仅GitHub存在的开发版依赖版本
报错原因
R CMD check默认走CRAN校验逻辑的时候,只会对照CRAN源的已发布包版本核对依赖要求,根本不会在依赖校验环节读Remotes字段去拉GitHub的开发版。你写的版本要求>=1.2-8比CRAN上最高的1.2-7高,检查流程扫到CRAN找不到满足要求的版本,直接就抛错了,根本走不到后续装GitHub包的步骤。
另外你原来的配置里Brobdingnag和版本括号之间多了空格,属于DESCRIPTION字段的不规范写法,也可能导致解析异常。
解决方法
按以下步骤操作即可解决:
- 先在本地安装符合要求的GitHub版依赖,装完确认版本:
devtools::install_github("RobinHankin/Brobdingnag") packageVersion("Brobdingnag") # 确认输出≥1.2.8 - 修正DESCRIPTION文件的字段写法,去掉多余空格,保持如下格式:
Imports: Brobdingnag (>= 1.2-8) Remotes: RobinHankin/Brobdingnag - 执行包检查时关闭CRAN模式校验,让检查流程直接调用本地已经装好的符合版本要求的依赖:
用devtools检查的话运行:
用原生R CMD check的话,加devtools::check(cran = FALSE)--no-cran启动参数即可。
重要提醒:如果你的包计划提交到CRAN,上述配置无法通过CRAN的官方检查——CRAN不允许包依赖指向非CRAN来源的开发版,也不允许版本约束高于CRAN已发布的对应包版本,必须等Brobdingnag的1.2-8版本正式上线CRAN之后,才能保留这个版本约束提交。如果你的包只在内部流通、或者托管在GitHub/GitLab等非CRAN平台,这个配置可以正常工作,其他用户用
devtools::install_github()安装你的包时,会自动识别Remotes字段拉取对应版本的依赖。
内容的提问来源于stack exchange,提问作者David Muñoz Tord
相关产品推荐
相关产品推荐

