我正在开发一个可重复计算的框架。我遇到的一个问题是,一些R代码可能在一个包的XY-Z版本中运行得很完美,但是为什么你在3年后尝试重现呢?更新了一些函数,并且代码不再运行。 此问题也影响使用包的Sweave文档。
自信地重现结果的唯一方法是安装原始作者使用的软件包的R版本和版本。 如果这是一个单一的情况,可以从CRAN档案中提取内容并安装适当的版本。 但对于我的框架来说,这是不切实际的,我需要预装软件包的版本。
现在假设我把自己限制在一个单一版本的R上,例如2.14。 什么是一个实际的方式来安装许多版本的R软件包,以便我可以加载他们的飞行? 我想我可以做一些事情,比如为每个包的每个版本创build单独的库目录,然后在加载时使用自定义的lib.loc参数。 这将是混乱,但。 任何提示或以前的尝试做类似的事情?
我的框架在Ubuntu服务器上运行。
你可以安装包含版本的软件包(比如重新命名为foo_1.0
目录,而不是foo
),并将你想要重新创建给定R +包快照的版本软链接到一个库中。 显然,这些包实际上可以存在于一个单独的树中,所以你可以使用library.projectX/foo
– > library.all/foo/1.0
。
操作系统为您提供了更多的完整分离句柄,以及Debian / Ubuntu堆栈。 两个我玩过的都是
chroot环境:我们使用这个来从主机完成独立的构建环境。 例如,我生成的所有Debian上传内置在我的amd64 Ubuntu服务器上托管的i386 pbuilder chroot中。 Chroot是一个非常强大的Unix系统调用。 Chroots,尤其是构建在Debian软件包之上的pbuilder系统,是为了无人操作。
虚拟机:这给你完整的一般性。 我不那么强大的盒子可以轻松处理三个虚拟机:Debian i386,Ubuntu i386以及Windoze XP。 为此,我现在使用KVM和libvirt; 这是Linux特定的。 过去我也使用过VirtualBox和VMware。
我将尝试修改DESCRIPTION文件,并通过添加版本号来更改字段“Package”。
例如,您可以从CRAN页面下载软件包源代码(http://cran.r-project.org/web/packages/pls/)。 将压缩文件(pls_2.3-0.zip)解压到一个目录(“pls /”)。 以下步骤是在描述(“pls / DESCRIPTION”)中更改软件包名称,然后使用R命令“R CMD INSTALL pls /”安装软件包名称,其中“pls /”是具有修改描述文件的软件包源的路径。
玩R库路径对我来说似乎是一件危险的事情。