开发R包时如何从GitHub导入指定版本的enrichR依赖包
如何在自定义R包中指定依赖GitHub上的特定版本enrichR
我明白你遇到的问题——CRAN上的enrichR存在bug,而你需要在自己的包里强制使用GitHub上的v2.1版本。下面是一步步的解决方法,帮你搞定这个依赖问题:
1. 修正DESCRIPTION文件的配置
你的现有配置方向是对的,但需要更精确地锁定GitHub版本,避免拉取最新版或者CRAN版。调整后的DESCRIPTION关键字段应该是这样:
Imports: enrichR (>= 2.1) Remotes: wjawaid/enrichR@v2.1
- 重点是在
Remotes里加上@v2.1,这样会直接拉取enrichR仓库里标记为v2.1的版本,而不是默认的最新分支。 - 确保
Remotes字段是单独成块的,放在DESCRIPTION文件的合适位置(通常在Imports之后或文件末尾均可,只要语法正确)。
2. 正确安装你的自定义包
这一步很关键!如果你用常规的install.packages()安装自己的包,R只会从CRAN寻找依赖,不会处理Remotes字段。你必须用devtools来安装:
# 先卸载可能存在的CRAN版enrichR(避免版本冲突) remove.packages("enrichR") # 安装你的自定义包(替换成你的GitHub仓库地址) devtools::install_github("你的GitHub用户名/你的包仓库名")
devtools会自动读取DESCRIPTION里的Remotes配置,帮你安装指定版本的enrichR。
3. 验证依赖是否生效
安装完成后,在R里运行以下代码确认配置成功:
# 查看enrichR的版本 packageVersion("enrichR") # 确认是从GitHub安装的 packageDescription("enrichR")$RemoteRepo
如果输出的版本是‘2.1’,且RemoteRepo显示‘enrichR’,说明依赖配置已经生效。
关于CRAN发布的注意事项
因为你的包同时在CRAN和GitHub发布,需要注意:CRAN不允许包依赖GitHub上的包(除非该包不在CRAN上)。所以如果你要把包提交到CRAN,要么等enrichR的CRAN版修复bug,要么通过维护两个分支(比如main用于GitHub发布,cran用于CRAN提交)来区分配置——CRAN分支移除Remotes字段,仅依赖CRAN版enrichR。
内容的提问来源于stack exchange,提问作者user10156381
相关产品推荐
相关产品推荐

