如何确保同一服务器上不同用户之间的R环境一致?

如何确保同一服务器上不同用户之间的R环境一致?,r,environment,R,Environment,我正在编写一份使用内部软件包“MyPKG”进行可重复分析的方案。每个用户将提供自己的输入文件;除输入外,分析应在相同条件下进行。(例如,我们可以推断不同的结果是由不同的输入文件造成的) MyPKG正在开发中,因此library(MyPKG)将加载用户在其本地库中编译的最后一个版本。它还将加载在其本地库中找到的任何依赖项 但我希望每个人都使用一个特定的版本(MyPKG_3.14)进行分析,同时仍然允许开发更新的版本。如果我理解正确,“R--vanilla”将为每个人加载相同的依赖项 完成后,我们将

我正在编写一份使用内部软件包“MyPKG”进行可重复分析的方案。每个用户将提供自己的输入文件;除输入外,分析应在相同条件下进行。(例如,我们可以推断不同的结果是由不同的输入文件造成的)

MyPKG正在开发中,因此
library(MyPKG)
将加载用户在其本地库中编译的最后一个版本。它还将加载在其本地库中找到的任何依赖项

但我希望每个人都使用一个特定的版本(MyPKG_3.14)进行分析,同时仍然允许开发更新的版本。如果我理解正确,“R--vanilla”将为每个人加载相同的依赖项

完成后,我们将把工作环境保存为VM,以保持稳定的可复制环境。因此,临时(6个月)解决方案就足够了

我已经提出了两个可能的解决方案,但不确定其中一个是否足够

  • 请服务器管理员将MyPKG_3.14安装到默认的R路径中,然后在协议中提供以下代码:

    R --vanilla
    library(MyPKG)
    ....
    

  • 在特定库中编译MyPKG_3.14,例如lib.loc=“/home/share/lib/R/MyPKG_3.14”,然后提供

    R --vanilla
    library(MyPKG)
    

    • 这两种方法是否足以确保每个人都运行相同的版本
    • 一个比另一个好吗
    • 是否有其他未预见的问题可能出现
    • 是否有一个标准化多重分析的首选方案
    • 我应该包括对
      SessionInfo()
      输出的测试吗
    • 在服务器上创建一个供所有人使用的帐户是否更好
    几点:

    • 使用系统范围的软件包安装,例如Debian/Ubuntu二进制软件包R(包括CRAN端口)将尝试使用
      /usr/local/lib/R/site library
      (如果添加到拥有目录的组中,用户也可以安装)。这样每个人都会得到相同的版本
    • 使用系统范围的配置,例如,与下面的点文件相比,更喜欢
      $R\u HOME/etc/
      。出于同样的原因,Debian/Ubuntu软件包在
      /etc/R/
    • 使用R的工具查询其包(例如
      installed.packages()
      )以报告包和版本
    • 在可用的情况下,使用操作系统级工具查询操作系统版本和版本。然而,这是不太标准化的
    关于最后一点,我家的盒子上写着

    > edd@max:~$ lsb_release -a | tail -4
    > Distributor ID: Ubuntu
    > Description:    Ubuntu 12.04.1 LTS
    > Release:        12.04
    > Codename:       precise
    > edd@max:~$ 
    

    这是一个开始。

    好问题。我在这个问题上的工作是作为一个更大项目的一部分,并计划发布一个库,该库将在任何执行后生成出处跟踪。比较两条记录道很容易,看看差异是新数据还是新库,如果出现不同的结果,其中一条记录道可以根据需要进行更改。有关详细信息,请发电子邮件给我。@Maiasaura我没有看到你的电子邮件。它是从kram开始的吗?向所有用户推出一个标准的
    .Rprofile.site
    文件,其中包括一行类似
    install.packages('mypathto/MyPKG_3.14')的代码就足够了吗;库(MyPKG_3.14)
    ?@CarlWitthoft,因为R在安装程序包时读取Rprofile,该程序包告诉R安装一个程序包,该程序包使其读取Rprofile…+1您最近给我的非常有用的建议是删除“~/R/x86_64-pc-linux-gnu-library/2.15”