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

时间:2014-02-18 09:46:17

标签: r rstudio package-management

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

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

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

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

2 个答案:

答案 0 :(得分:7)

默认情况下,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。 / p>

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

答案 1 :(得分:2)

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

每个用户都应该设置两个环境变量。 R_LIBS应指向公共图书馆,R_LIBS_USER应指向其个人位置。有关详细信息,请参阅?.Library

您可以使用.libPaths()检查用户的库路径。您可能希望用户将软件包安装到他们的个人库中,因此可能需要进行一些调整以确保个人库是.libPaths()中的第一个元素。

相关问题