【问题标题】:Package management running R on a shared server在共享服务器上运行 R 的包管理
【发布时间】:2014-02-18 09:46:16
【问题描述】:

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

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

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

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

【问题讨论】:

  • 欢迎来到 SO。这应该去SuperUsers,看看页面How to Ask,他们可以更好地回答你。祝你好运
  • @Llopis 系统管理员问题通常是关于服务器故障的,但这是关于编程工具的,所以没关系。来自stackoverflow.com/help/on-topic“有关专业服务器、网络或相关基础设施管理的问题对于 Stack Overflow 来说是无关紧要的,除非它们直接涉及编程或编程工具”

标签: r rstudio package-management


【解决方案1】:

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

【讨论】:

  • 给定您列出的目录,您将如何编写配置文件?你能提供一个sn-p吗?
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 2015-03-21
    • 1970-01-01
    • 2021-10-03
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多