在生产中运行的最佳实践R脚本 - 包版本

时间:2016-04-28 21:33:20

标签: r production-environment

我们有一个linux(Ubuntu 14.10)生产服务器,以及我们想要在其上运行的许多R脚本,它们将从API或Web抓取中收集数据。然后,数据将写入CSV文件。

我的背景是SQL Server / Fortran,在生产环境方面应该遵循非常具体的最佳实践。一些突出的是: -

  • 从代码的角度来看,生产环境在版本控制方面应该是稳定的,而且还应该是已安装的应用程序,操作系统等。
  • 对代码/应用程序/操作系统的更改应在单独的环境中进行,或者以受控制的方式进行,并且可以退出。 如果存在第二个环境,则可以执行并行执行以测试系统更改的可能性。
  • (很大程度上),开发人员不得改变生产环境。

我的问题是:在我选择更新它们之前,如何确保与我的R代码关联的软件包保持一致且不变?

2 个答案:

答案 0 :(得分:5)

你可以使用Docker;我们的Rocker project有一些合适的容器可以开始。

否则只需使用基本的Unix sys.admining:

  • 如果您不想更改R的包目录,请将它们设为只读
  • 使用来自HPC人员的一些技巧并使用“模块”(即符号链接或PATH设置的层)来使某些路径和目录可见

一般来说,Task View on Reproducible Research还有一些指示。 可以在每个生产运行中记录使用的版本,并且可以设置运行,以便可以将版本与预期版本进行比较。

但这些对R来说都不是真的 - 这些都是部署的“Meta”问题。

答案 1 :(得分:0)

@Lev Kuznetsov使用packrat发布了另一个解决方案,请参考他的answer更一般的问题