当前位置: 首页 > 知识库问答 >
问题:

在Linux服务器上安装多个用户使用的R软件包的位置?

岳承悦
2023-03-14

我们正在AWS托管的CentOS Linux服务器上运行RStudio Server。服务器上有多个用户,每个用户都使用RStudio服务器。我们希望所有用户都有一个安装软件包的公共路径,以便:

  1. 每个用户不需要为其RStudio用户配置文件安装每个软件包
  2. 如果一个人更新包,则每个用户都将使用更新后的

这样做最好的程序是什么?

我提出的解决方案如下,但失败了:

保存现有用户包列表:

> save.pkg.list <- installed.packages()[is.na(installed.packages()[ , "Priority"]), 1]
> save(save.pkg.list, file="pkglist.Rdata")

删除用户包:

> remove.packages(save.pkg.list)

然后,我的想法是将软件包从save.pkg.list安装到root下的一个文件夹中。似乎已有共享文件夹/usr/share/r/library,其中包含我的库路径中的一个包:

.libPaths() [1] "/home/ursus/R/x86_64-redhat-linux-gnu-library/3.1" "/usr/lib64/R/library" "/usr/share/R/library"

为了测试它,我尝试将一个包安装到共享文件夹中,看看服务器上的其他用户是否可以在他们的R实例中使用它。安装失败,很可能是因为它在root下,我假设我需要使用sudo特权(我有),但不确定如何将这些特权传递给R以进行包安装过程:

install.packages("dlm", lib = "/usr/share/R/library") Warning in install.packages : 'lib = "/usr/share/R/library"' is not writable

最后,我假设需要对r_libs_siter_libs_user环境变量进行一些更改,以控制默认的包安装/加载行为。但是,我还没到。

共有1个答案

蓬英逸
2023-03-14

我从来没试过,但我不明白为什么这不起作用:

您可以使用.libpaths()设置库目录(不仅是为了获取库目录),那么为什么不让每个人都使用一个可被每个人写入的公共目录作为libpath呢?每个用户都可以在其.rprofile中放入如下内容

.libPaths( c(.libPaths(), "/path/to/shared/lib") )

那么该路径将是每个人安装/检索包的默认位置。

这种方法的一个问题是,每个人仍然拥有自己的原始libPath,因此,如果他们试图更新现有的包,它将更新自己的版本。您可以通过将libpath仅设置为新路径而不是追加到新路径来克服这一问题。

注意,这有时会产生不好的后果,有时a人的代码依赖于某个版本的包,然后B人更新包,然后a人5分钟后再次运行他的代码,突然它就坏了,他们完全不知道为什么。

 类似资料:
  • 问题内容: 我正在通过该库在我的Python脚本中使用,并且我需要一个不在R的默认安装中的软件包。如何安装它? 将无法正常工作。 在Python上: 从R: 问题答案: 这个怎么样

  • 我很困惑。我已经做了十几次这个过程,从来没有遇到过这个问题。 我为乌班图安装了最新版本的R 我输入R,没有任何问题,给我最新的版本,我可以加载原生包。 但当我尝试安装新的软件包时,它们会下载,但我什么也没得到。例如,如果我安装ggplot2: 我已经彻底清除了很多次文件,但运气都不好。 我以 root 用户身份登录。 我觉得我遗漏了什么明显的东西?我不知道——我在Ubuntu、Mac、Window

  • 问题内容: 在我的应用程序中,我想使用: ,这需要 ,这需要 如何安装带有pip的多个版本来处理这种情况? 问题答案: 点不会帮助您。 您可以告诉它安装特定版本,但是它将覆盖另一个版本。另一方面,使用两个virtualenvs将使您在同一台计算机上安装两个版本,但不能同时使用它们。 最好的选择是手动安装这两个版本,方法是将它们以不同的名称放在Python路径中。 但是,如果您的两个库期望它们具有相

  • 本文向大家介绍LINUX 下软件包的安装与使用详解,包括了LINUX 下软件包的安装与使用详解的使用技巧和注意事项,需要的朋友参考一下 LINUX下软件包的安装与使用 1、安装RPM包   rpm -ivh 包全名 2、查询某个包是否安装   rpm -q 包名 3、查询已安装的包的信息(主要看版本)   rpm -qi 包名 4、查询已安装包的安装位置   rpm -ql 包名 5、查询某个包需

  • 问题内容: 嗨,我正在尝试使用mono-service2从Visual Studio中运行库存Windows Service Project。我在单声道2.0的debian上运行它并进行编译。 我尝试从这里开始(我尝试将-d设置为应用程序的目录,并设置了-n,-m) 唯一的代码更改是添加测试写行 Service1.cs 结果就是这个错误 谢谢你的帮助 回答 我缺少LD_LIBRARY_PATH e

  • 本文向大家介绍在linux服务器上安装Jenkins,包括了在linux服务器上安装Jenkins的使用技巧和注意事项,需要的朋友参考一下 Jenkins是用java编写的开源持续集成工具,目前被国内外各公司广泛使用。本章教大家如何在linux服务器上安装Jenkins。 一、获得一台linux服务器 要在linux下安装git,首先你得先有一台linux服务器,作为小白,手头的机器肯定都是win