各种R软件包的不同安装位置背后的逻辑是什么?我似乎在我的linux机器上的几个不同位置安装了软件包。这是典型行为吗?如果是这样,在/usr/lib/R/library
vs /usr/lib/R/site-library
中安装软件包的合理性是什么?我并不关心软件包的安装位置,但是将安装分布在我的系统的不同位置似乎有点愚蠢。
Renviron
下面有评论,这似乎表明/usr/lib/R/site-library
适用于Debian打包的软件包,但并没有真正解释其他两个目录的用途。另外,通过在列表中设置最后一个/usr/lib/R/library
,不会使它不是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"
答案 0 :(得分:8)
马特,
您将错误的方法从特定(Debian / Ubuntu)推广到通用(所有Linux发行版)。
这个特殊的设置是由两个使用Debian的R Core成员向我建议的(这是在Ubuntu出现之前)。这是不一个R-wide建议,这就是为什么你不会在手册中找到它,而是R电源用户在Debian和Debian系统上实现的具体建议。
基本理念是
保持完全忠实于包管理系统处理的/usr/
,/var/
......的分离(例如{{1}一方面是用户,apt-get
,...)另一方面是用户dpkg
等:这两个从不混合
以便/usr/local/...
获取/usr/local/lib/R/site-library
发出的列表中的第一个位置,从而成为默认值,从而确保用户安装的包最终低于.libPaths()
上一点
因此,在/usr/local/
下方,我们得到了R推荐打包之间的分离(包括在基本R源中:/usr
,boot
,grid
,. ..)lattice
内,然后/usr/lib/R/library
以下的所有其他包管理控件 r-cran-*
包。所以例如/usr/lib/R/site-library
结束,或r-cran-xml
,或...
我仍然认为分裂很棒,这就是我在Debian R软件包中维护这个设置的原因。
在所有用户的网站范围内使用本地软件包是一个多用户操作系统的好主意。