在共享服务器上运行R的包管理

在共享服务器上运行R的包管理,r,rstudio,package-management,R,Rstudio,Package Management,一些背景知识:我是一名刚刚开始为我们部门维护服务器的系统管理员。服务器上有几个虚拟机,大部分是Ubuntu SE 12.04,通常每个项目都有一个单独的虚拟机 我们使用的工具之一是R和RStudio,也是服务器版。我已经设置好了,这样每个人都可以通过浏览器访问它,但我仍然想知道处理包管理的最佳方法是什么。理想情况下,我将有一个文件夹/库和我们的“通用”包,这在许多项目和用例中都很常见。我会管理这个库,因为我是sudo中唯一的用户。我的同事应该能够在他们的“个人”R文件夹中逐个添加包,如果某个包在

一些背景知识:我是一名刚刚开始为我们部门维护服务器的系统管理员。服务器上有几个虚拟机,大部分是Ubuntu SE 12.04,通常每个项目都有一个单独的虚拟机

我们使用的工具之一是R和RStudio,也是服务器版。我已经设置好了,这样每个人都可以通过浏览器访问它,但我仍然想知道处理包管理的最佳方法是什么。理想情况下,我将有一个文件夹/库和我们的“通用”包,这在许多项目和用例中都很常见。我会管理这个库,因为我是sudo中唯一的用户。我的同事应该能够在他们的“个人”R文件夹中逐个添加包,如果某个包在我们的主文件夹中不可用,这些文件夹将作为备份进行检查

我的问题有几个部分: -这真的是一种可行的方法吗? -我将如何配置它? -有没有一种方法可以轻松地自动化此库,以便在其他VM中使用


关于Python,我有一个类似的问题,但也许我应该提出一个新问题。

R默认支持包的多个库。库基本上只是放置已安装包的文件夹。 你可以用

.libPaths() 
在R中查看系统上用作库的路径。在我的Ubuntu 13.10系统上,有

  • 位于“~/R/x86_64-pc-linux-gnu-library/3.0”的个人库,其中放置了用户安装的软件包
  • “/usr/lib/R/library”,其中放置通过apt get安装的软件包并
  • “/usr/lib/R/site library”,这是一个系统范围的库,用于所有用户共享的包
您可以向R中添加其他库,但从我对您的问题的理解来看,将包安装到/usr/lib/R/site library可能是您想要的。通过以root用户身份运行R,并像往常一样从那里调用install.packages()和update.packages(),可以相对轻松地对其进行归档。但是,以root用户身份运行R会带来安全风险,这不是一个好主意,因此最好创建一个对/usr/lib/R/site library具有写访问权限的独立用户,并使用该用户而不是root用户


如果您在多个VM上装载/usr/lib/R/site library,它们还应该共享安装在那里的软件包。这是否回答了您的问题?

拥有公共图书馆和个人图书馆位置是完全可行的

每个用户应设置两个环境变量
R_LIBS
应指向公共库,
R_LIBS_用户
应指向其个人位置。有关更多信息,请参见
?.Library


您可以使用
.libPaths()
检查用户的库路径。您可能希望用户将软件包安装到其个人库中,因此可能需要进行一些修改,以确保个人库是
.libpath()

的第一个元素欢迎使用so。这应该转到,看看页面,他们可以更好地回答你。好luck@Llopis系统管理员的问题通常发生在服务器故障上,但这是关于编程工具的,所以没问题。从“有关专业服务器、网络或相关基础设施管理的问题,除非直接涉及编程或编程工具,否则不属于堆栈溢出的主题”中可以看出,对于列出的目录,您将如何编写配置文件?你能提供一个片段吗?