R包发布时GitHub URL被标记为可能无效的NOTE问题咨询
我来帮你搞定这个烦人的重复提示问题!首先得明确:devtools::release()的检查逻辑是严格对齐CRAN的审核标准的,而build_win()和Travis CI的检查相对宽松,所以才会出现这种差异。下面是具体的解决步骤:
检查URL格式与唯一性
CRAN对包内的URL有明确要求:必须是可直接访问的HTTPS地址,且尽量避免重复出现。先逐个核对DESCRIPTION和CITATION里的GitHub地址:- 确保所有URL都用
https://开头,不要用git://或者SSH格式的地址; - 清理掉重复的URL,比如不要在DESCRIPTION的多个字段(比如URL、BugReports之外的其他字段)重复填写同一个GitHub地址,也不要在CITATION里重复写和DESCRIPTION完全一致的地址(除非必要)。
- 确保所有URL都用
规范DESCRIPTION文件的URL配置
按照CRAN的标准写法来配置:URL: https://github.com/你的用户名/你的包名 BugReports: https://github.com/你的用户名/你的包名/issues这里要注意:URL字段只放包的主GitHub页面,BugReports专门放issues页面,不要把两个地址混写在同一个字段里,也不要添加多余的注释或者空格。
调整CITATION文件的URL写法
如果CITATION里需要引用GitHub地址,确保格式正确且不要和DESCRIPTION重复冗余。比如:bibentry( bibtype = "Manual", title = "你的包的正式名称", author = person("你的名字", "你的姓氏"), year = "2024", url = "https://github.com/你的用户名/你的包名", version = "1.0.0" )如果CRAN提示重复,你可以考虑在CITATION里用更具体的地址,比如指向包的release页面或者文档页面,而不是和DESCRIPTION完全一致的主页面。
提前模拟CRAN检查定位问题
运行devtools::check(cran = TRUE)来完整模拟CRAN的审核流程,这样能提前看到所有的NOTE(包括重复URL的提示)。针对每个提示,逐一确认:- 如果是重复的URL,直接删除多余的实例;
- 如果是格式问题,调整成符合要求的HTTPS地址;
- 如果是首次提交的正常NOTE(比如新包提示),可以忽略,但要确保URL相关的NOTE都处理完毕。
重新构建并验证
调整完所有内容后,先运行devtools::build()重新构建包,再运行devtools::check(cran = TRUE)确认所有URL相关的重复提示都消失,最后再执行devtools::release(),应该就不会再出现重复的提示了。
内容的提问来源于stack exchange,提问作者Paul Hibbing

