删除受保护的 /usr/ 路径中的 R 库

删除受保护的 /usr/ 路径中的 R 库

我熟悉 Unix 操作系统,但不了解开发人员如何决定组织应用程序库位置的一般逻辑。

以 R 为例。在 ubuntu 上安装 R 可以使用 apt-get 完成。您将在目录中获得安装:

/usr/local/R/lib/site-library         --> All R packages go here.
/usr/lib/R/library                    --> R packages go here.

默认情况下,这两个目录都是不可写的。那么为什么 R 安装默认安装在那里呢?

我在将 R 包安装到“默认”目录(我猜是/usr/lib/R/library?)时遇到了很多问题,所以我不得不将它们安装到本地目录中~/R/x86_64_pc-linux_gnu-library/3.2

我的问题是:如何摆脱所有“默认”库并仅使用本地库目录?不仅要删除旧的默认库,还要让 R 知道我的新默认库位于~/R/x86_64_pc-linux_gnu-library/3.2

答案1

如果您不想使用 R 的打包版本,那么您需要将您自己的版本安装到您​​将从中使用它的私人目录中。

如果您愿意,还可以创建附加 R 库的 Ubuntu 包,以便将它们安装到系统中。

答案2

默认情况下,这两个目录 [/usr/local/R/lib/site-library/usr/lib/R/library] 都是不可写的。那么为什么 R 安装默认安装在那里呢?

我在将 R 包安装到“默认”目录(我猜是/usr/lib/R/library?)时遇到了很多问题,所以我不得不将它们安装到本地目录中~/R/x86_64_pc-linux_gnu-library/3.2

默认的 R 包(例如, base) 安装在这些系统库中,因为这些库可供该机器上的所有用户使用。

虽然非 root 用户无法写入,但这是设计使然。用户可以将附加软件包安装到个人库中。

Sys.getenv('R_LIBS_USER')您可以在 R 控制台中运行来查看此个人库的默认位置。

.libPaths()命令允许您查看当前的库搜索路径集,以及添加其他路径。

我的问题是:如何摆脱所有“默认”库并仅使用本地库目录?不仅要删除旧的默认库,还要让 R 知道我的新默认库位于~/R/x86_64_pc-linux_gnu-library/3.2

您不想“删除”这些默认库,因为它们包含一组默认的 R 包。这些是 R 正常工作所必需的。

R 已经知道默认的个人图书馆位置(参见.libPaths())。

但是,您可以通过指定库位置来指定要安装包的位置并从中加载它们:

install.packages('packageName', lib = Sys.getenv('R_LIBS_USER'))
library('packageName', lib.loc = Sys.getenv('R_LIBS_USER'))

为了更轻松地控制 R 包版本(这对于可重复的研究尤为重要),我建议packrat包。它可用于为每个项目配置一个个人库,从而允许每个项目使用自己的一组包(IE,不同版本)。使用时它会自动运行,因此您在安装或加载包时packrat 无需指定libnor参数。lib.loc

相关内容