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