R 3.4.1 "Single Candle" Personal Library Path Error: unable to create ‘NA’

R 3.4.1 "Single Candle" Personal Library Path Error: unable to create ‘NA’

我刚刚在我的 Linux Mint 18.1 Cinnamon 机器上更新到 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' 输出,但通常它会提供如下解决方案:

Would you like to create a personal library
~/R/x86_64-pc-linux-gnu-library/3.4
to install packages into?  (y/n) y 

知道为什么个人图书馆建议不适用吗?有没有办法手动覆盖它?

我不知道是什么导致了这个问题(我也在 Ubuntu 16.04 上遇到过),但这里有一个快速的解决方法:

.libPaths(c("/home/your_username/R/x86_64-pc-linux-gnu-library/3.4/", .libPaths()))

当然,您可以将 "/home/your_username/..." 替换为任何其他目录(将存储您的个人图书馆)。

此解决方案使 install.packages()library() 工作。等待完整修复!

编辑:我应该注意到这个解决方案不是持久的。也就是说,它不会在重新启动 R 后持续。您可以通过将上述相同的代码行添加到 /home/your_username/.Rprofile 文件来解决此问题。

可能这是 R 3.4.1 的一个错误,我的解决方案是更改

的行
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'}

我在 运行 一些 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

然后运行upgrade.packages()(或install.packages(),或biocLite())在R.

这样更改是临时的,您不必更新任何配置文件。

如果随后 .Renvironor.Rprofile` 中的命令在 R 启动期间将 R_USER_LIBS 设置为不同的位置(-检查您的配置),则此 shell 命令将无用。

坚持使用 $HOME/R/x86_64-pc-linux-gnu-library/3.X 可能是可取的 如果您在这个位置已经有很多包裹,您希望它们 upgraded/installed 在那里。 我那里有很多 Bioconductor 包,我不想让它们再次下载,其中一些包在使用时会下载巨大的 "Omics" 数据集。 可能 /usr/local/lib/R 所在的分区磁盘太小 space 或位于较慢的驱动器上。

查看@Dirk 的评论 (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=866768) 中的详细信息,这是一个计划中的行为,以便为系统的所有用户安装一次包。

解决方案是让 /usr/local/lib/R/ 对所有用户都可写,而不是恢复为每个用户提供个人包库的旧行为。

打开终端并:

  • 使用 cd /usr/local/lib/
  • 导航至 /usr/local/lib/
  • 更改 owner:group 以便所有用户都可以写入该文件夹。我的计算机上碰巧有一个所有用户都是其成员的组,所以我使用了它,但如有必要,请参阅 https://askubuntu.com/questions/66718/how-to-manage-users-and-groups 以获取有关设置组的帮助
  • 要更改所有权,请使用 sudo chown owner:group -R R/owner 是任何用户,这并不重要。 group是关键;确保任何想在你的系统上使用 R 的人都是这个组的成员。 -R 是递归的(即对 R/ 中的所有文件和文件夹执行此操作)。
  • 如果您需要更改群组权限,请使用chmod -R 775 R/。这会授予所有者和组读、写和执行权限,并授予所有其他人读和执行权限。

现在重新启动 R,您应该能够将包安装到您的共享位置。

如下:

文件/usr/lib/R/etc/Renviron中有R的配置

第 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,现在可以使用了。

编辑: 查看评论,这似乎是一种计划好的行为。 是另一种解决方案。

2017 年 7 月 8 日之后,这将解决所有问题

sudo apt-get update