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

use*_*358 2 r package-management rstudio

一些背景:我是一个相当开始的系统管理员维护我们部门的服务器.该服务器包含多个VM,主要是Ubuntu SE 12.04,通常每个项目都有一个单独的VM.

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

我的问题有几个部分: - 这实际上是一种可行的方法吗? - 我该如何配置? - 有没有办法轻松自动化此库以用于其他VM?

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

小智 7

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

.libPaths() 
Run Code Online (Sandbox Code Playgroud)

在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,它们也应该共享那里安装的软件包.这回答了你的问题了吗?