Linux下R包的安装位置逻辑

各种R软件包的不同安装位置背后的逻辑是什么? 我似乎在我的Linux机器上安装了几个不同位置的软件包。 这是典型的行为,如果是这样的话,在/ usr / lib / R / library vs / usr / lib / R / site-library中安装软件包有什么理由? 我并不在乎软件包的安装位置,但是在我系统的不同位置安装这些软件看起来很愚蠢。

Renviron的注释如下,似乎表明/ usr / lib / R / site-library是Debian打包的软件包,但并没有真正解释其他两个目录的用途。 另外,通过在列表中设置最后一个/ usr / lib / R /库不会使它不是install.packages()的默认目录?

# edd Apr 2003 Allow local install in /usr/local, also add a directory for # Debian packaged CRAN packages, and finally the default dir > .libPaths() [1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library" [3] "/usr/lib/R/library" 

马特,

你从特定的(Debian / Ubuntu)到通用(所有的Linux发行版)的概念是错误的。

这个特定的设置是由两个使用Debian的R Core成员向我推荐的(这是在Ubuntu之前)。 这不是一个R范围的建议,这就是为什么你不能在手册中找到它的原因,而是R大功率用户在Debian和Debian系统上实现的特定建议。

基本的想法是

  • 要保持完全忠实于/usr//var/ ,…以便一方面由包管理系统 (例如apt-getdpkg ,…)处理和/usr/local/...等等,这两者不能混用

  • 这样/usr/local/lib/R/site-library获得.libPaths()发出的列表中的第一个点,从而成为默认值,从而确保用户安装的软件包最终位于/usr/local/前一点

  • 所以在/usr下面,我们在/usr/lib/R/library里面建立了R的推荐的打包(也包括在基本的R源文件中: bootgridlattice ,…),然后所有其他的软件包管理 r-cran-*软件包在/usr/lib/R/site-library 。 所以,例如r-cran-xml最终在那里,或者r-cran-zoo ,或者…

我仍然认为这个分割非常棒,这就是为什么我在Debian R软件包中维护这个设置的原因。

拥有所有用户的本地软件包是多用户操作系统上的一个好主意。