2017-07-28 162 views
0

您如何最好地在R中封装软件包版本?Pinning R软件包版本

拒绝策略1:引脚到CRAN源tar.gz小号

  • ,如果你想在最新版本的针脚它,因为CRAN不会将尖端版的存档不工作(杜)

拒绝策略2:使用devtools

  • 不想,因为它需要年龄编译,并增加了很多的东西,我不想用

拒绝策略3:供应商

  • 宁可无需复制所有来源
+0

你说“脚”的意思是不明确的,但我想你想packrat https://rstudio.github.io/packrat/控制一个项目包的版本。 –

+0

针脚设置为建筑时要使用的特定版本。 “packrat”基本上是一个售货库,据我了解? – salient

+0

我相信是这样,我从来没有真正使用它,但我知道它。出于这个原因,我把它作为评论而不是回答。 –

回答

1

为了提供更多有关packrat的信息,我将其用于此目的。从website

R软件包依赖性可能令人沮丧。你有没有必要使用 反复试验来找出你需要安装哪些R包到 使别人的代码工作 - 然后留下这些包 永远全球安装,因为现在你不知道是否你 需要他们吗?你是否曾经更新过软件包以便在你的 项目中的某一个中工作,只是发现更新后的软件包使 中的代码停止工作?

我们构建了packrat解决这些问题。使用packrat使您的R 项目更多:

隔离:为一个项目安装新的或更新的软件包不会破坏您的其他项目,反之亦然 。这是因为packrat 为每个项目提供了自己的私有包库。便携式:轻松 将您的项目从一台计算机传输到另一台计算机,甚至跨越 不同的平台。 Packrat可以轻松安装您的项目所依赖的包装 。可重现性:Packrat记录您所依赖的确切版本号为 的包装版本,并确保这些确切版本为 即可随时随地安装的版本。

Packrat存储您在packrat.lock文件中使用的包的版本,然后下载该版本从CRAN每当你packrat::restore()。它的重量比devtools轻得多,但仍需要一些时间才能重新下载所有软件包(具体取决于您使用的软件包)。

如果你喜欢所有的源存储在一个zip文件,你可以使用packrat::snapshot()拉下源/更新packrat.lock然后packrat::bundle()以“捆绑”的一切行动。这样做的目的是,通过存储在原始设计中使用的包的版本和依赖性(连同使得避免在二进制操作系统依赖性的源代码),以使项目/研究可再现和便携式随时间。

还有就是我的网站链接到更多的信息,你可以看到在git repo当前活动。我也遇到过,在一个低于理想的方式工作,少数病例(包不CRAN的一些时期一些问题),但混帐回购协议似乎仍然是有问题/补丁这是非常令人鼓舞活跃。