我想在 Linux 上将几个 R 库 (*) 从一个驱动器移动到另一个驱动器,并且想知道一个简单的移动是否可行且安全,或者我是否应该卸载并重新安装这些包。我意识到库的位置是.libPaths()
通过“R 安装和管理”手册来确定的,并查看了有关迁移库的信息,但没有看到推荐的过程。
我认为三个选项:
- 运行
remove.packages()
所有非基础包,并通过install.packages(lib = "/path/to/new/location")
. - 使用符号链接移动库(目录)
mv
并使用符号链接指向新位置(并最终删除符号链接) - 按照R 安装和管理手册中的建议,使用
mv
Linux 中的命令将目录批量移动和更新.Library.site
R_HOME/etc/Rprofile.site
选项#1 是直截了当的。选项 #2 应该可以工作,但似乎有点不合理。
#3 安全还是存在严重问题?我发现的问题是:目录权限以及任何包的设置存储绝对路径而不是相对路径的可能性(这似乎不合理且不必要)。
关于绝对路径的存储,我发现rJava
将 的位置存储R_HOME
在一个名为run
. 这本身不是库问题,但它表明一个包(以及一个好的包)保留了绝对路径的私有副本。
(*) 有几个库和许多包。自然,只有库(目录)被移动,但包可能会受到影响。
更新 1 / 澄清:只是为了澄清:我只是迁移库,而不是更改 R 的版本或包的版本。更新 R 或软件包可以单独完成,但问题只是移动库是否可行。似乎如果有必要更新或重新安装所有软件包以确保正确安装,那么这是一个更类似于选项 #1 而不是选项 #3 的路径。
更新2:另一个SO帖子的答案对如何在升级时避免这个问题有一些好主意。我没有升级 R,但 Dirk Eddelbuettel 建议不在 R 的文件树中安装软件包是明智的。