R 3.4.1“单个蜡烛”个人图书馆path错误:无法创build“不适用”
我刚刚在我的Linux Mint 18.1肉桂机上更新到R(3.4.1“Single Candle”),我试图安装一个软件包。 R返回了以下内容:
> install.packages('ggplot2') Installing package into '/usr/local/lib/R/site-library' (as 'lib' is unspecified) Warning in install.packages("ggplot2") : 'lib = "/usr/local/lib/R/site-library"' is not writable Would you like to use a personal library instead? (y/n) y Would you like to create a personal library NA to install packages into? (y/n) y Error in install.packages("ggplot2") : unable to create 'NA'
我以前遇到过'lib not writable'输出,但通常它提供了这样一个解决scheme:
Would you like to create a personal library ~/R/x86_64-pc-linux-gnu-library/3.4 to install packages into? (y/n) y
任何想法为什么个人图书馆build议NA? 有没有办法手动覆盖这个?
2017年7月8日之后,这将解决所有问题
sudo apt-get update
我不知道是什么原因导致这个问题(我也在Ubuntu 16.04上遇到这个问题),但是这里有一个快速的解决方法:
.libPaths(c("/home/your_username/R/x86_64-pc-linux-gnu-library/3.4/", .libPaths()))
当然,你可以replace"/home/your_username/..."
来存放你的个人图书馆。
这个解决scheme使install.packages()
和library()
工作。 等待一个完整的解决scheme!
编辑:我应该注意到,这个解决scheme不是持久的。 也就是说,在重新启动R之后它不会持续。您可以通过将上述相同的代码行添加到/home/your_username/.Rprofile
文件来解决此问题。
查看@Dirk评论( https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=866768 )中的详细信息,这是一个计划的行为,以便为系统的所有用户安装一次软件包。
解决scheme是为所有用户制作/usr/local/lib/R/
可写,而不是重新设置为每个用户提供个人包库的旧行为。
打开一个terminal,并:
- 导航到
/usr/local/lib/
cd /usr/local/lib/
- 更改所有者:组,以便所有用户都可以写入该文件夹。 我碰巧在我的计算机上有一个所有用户都是的成员,所以我使用了这个function,但请参阅https://askubuntu.com/questions/66718/how-to-manage-users-and-groups寻求帮助。如有必要设立一个小组;
- 要更改所有权,请使用
sudo chown owner:group -RR/
。owner
是任何用户,这并不重要。group
是关键之一; 确保任何人想在你的系统上使用R是这个组的成员。-R
是recursion的(即,将其执行到R/
所有文件和文件夹)。 - 如果您需要更改组权限,请使用
chmod -R 775 R/
。 这为所有者和组提供读取,写入和执行权限,并赋予所有其他人读取和执行权限。
现在重新启动R,你应该能够安装软件包到你的共享位置。
我的解决scheme如下:
在文件/usr/lib/R/etc/Renviron
有一个configurationR.
在第43-45行中有:
# edd Jun 2017 Comment-out R_LIBS_USER #R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/3.4'} ##R_LIBS_USER=${R_LIBS_USER-'~/Library/R/3.4/library'}
我已经取消注释R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/3.4'}
,重新启动RStudio,现在可以运行。
编辑:看看评论,这似乎是一个计划的行为。 这是另一个解决scheme。
在运行某些Bioconductor软件包的安装过程时,也发生了同样的情况。
然后我意识到我也可以在bash命令行上写下这个(或类似的):
export R_LIBS_USER=$HOME/R/x86_64-pc-linux-gnu-library/3.4 && R
要么
export R_LIBS_USER=$HOME/R/x86_64-pc-linux-gnu-library/3.4 && rstudio
然后在R中运行upgrade.packages()
(或install.packages()
或biocLite()
)。
这样的改变是暂时的,你不必更新任何configuration文件。
如果随后在.Renviron or
.Rprofile中的命令在R启动过程中将R_USER_LIBS设置为不同的位置(检查您的configuration),则此shell命令无用。
坚持在$ HOME / R / x86_64-pc-linux-gnu-library / 3.X可能是可取的,如果你已经有很多的软件包在这个位置,你希望他们升级/安装在那里。 我有很多Bioconductor软件包,我不希望他们再次下载,其中一些软件包在使用时下载了大量的“组学”数据集。 也许/ usr / local / lib / R所在的分区的磁盘空间太less,或者在缓慢的驱动器上。
可能这是R 3.4.1的一个bug,而我的解决scheme是改变行号
R_LIBS_SITE=${R_LIBS_SITE-'/usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library'}
在/etc/R/Renviron
文件中
R_LIBS_SITE=${R_LIBS_SITE-'~/R/x86_64-pc-linux-gnu-library/3.4.1:/usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library'}