3

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

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

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

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

4

2 回答 2

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。

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

于 2014-02-18T12:19:57.783 回答
2

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

每个用户都应该设置两个环境变量。 R_LIBS应该指向公共图书馆,并且R_LIBS_USER应该指向他们的个人位置。有关?.Library更多信息,请参阅。

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

于 2014-02-18T12:21:22.043 回答