我正在创建一个自定义R包存储库,并希望复制CRAN存档结构,从而将旧版本的包存储在src/contrib/Archive/packageName/
目录中。我想在install_version
(源here)中使用devtools
函数,但该函数依赖于具有类似CRAN的归档结构,而不是src/contrib/
中的所有包版本1}}。
是否有任何R软件包存储库管理工具可以帮助创建此目录结构和其他相关任务(例如更新Archive.rds文件)?
如果管理工具处理存储库端的包type
逻辑,那么我也可以使用Linux服务器上的相同install.packages()
或install_version()
代码。我的本地Mac(即在Mac上本地安装时我不必使用type="both"
或type="source"
。
答案 0 :(得分:4)
简答: 不是真正的现成用途。
答案很长: 有一些工具可以用来管理他们的回购,但是还没有一个连贯的现成生态系统。
CRAN维护者保留了一大堆脚本here来管理CRAN存储库,但目前还不清楚它们如何协同工作或更新包索引,运行包检查或管理目录结构所需的部分
tools::write_PACKAGES
函数可用于更新包索引,但每次从存储库添加,更新或删除包时都需要更新。
M.eik Michalke创建了roxyPackage
package,它能够自动更新给定的存储库,安装它等。开发人员最近还添加了拥有存档结构的功能。使用archive_structure
函数模仿CRAN的模式。缺点是软件包不在CRAN上,如果与devtools
集成,可能会更好。它也是全新的,尚未准备好广泛使用。
最后,我创建了一个小的Ruby script,它可以监视给定的存储库并在任何文件发生更改时更新包索引。但是,这适用于我的特定组织,需要重构以供外部使用。如果有人对它感兴趣,我可以使它更通用。