库不可写

Pri*_*ya 41 ubuntu r

我在Ubuntu机器上的R 3.0.2(2013-09-25)软件包安装过程中遇到此问题:

install.packages("randomForest")
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning in install.packages :
  'lib = "/usr/local/lib/R/site-library"' is not writable
Run Code Online (Sandbox Code Playgroud)

怎么解决?

man*_*_va 45

对于R版本3.2.2(2015-08-14),应该解决此问题,因为R在安装过程中建议存储R库的不同路径.安装如下所示:(这里'random'用作示例包)

install.packages('random')

Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning in install.packages("random") :
'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
~/R/pc-linux-gnu-library/3.2
to install packages into?  (y/n) y
Run Code Online (Sandbox Code Playgroud)

所以在安装过程中回答"y"这两个问题都应该正确安装包.

更新18/01/19

如果您不想将R包存储在其他文件中:

正如Antoine-Sac和Robert TheSim指出的那样,您可以将自己添加到工作人员组中,以便能够写入"站点库".(点击名称查看他们的重要补充)

在此更新之前,我在本评论中提到了使用'chmod o + w'更改文件夹'site-library'的权限以便能够写入它的选项.假设安全问题,但当时我无法告知它,但主要是等待somone清除这一点.Antoine-Sac和Robert TheSim 在此期间也做到了这一点.谢谢!

  • 不要那样做!设置 o+w 允许任何其他用户(这意味着任何正在运行的进程)写入站点库,这是一个安全问题。站点库目录属于集团员工。只需将自己添加到员工组(在 debian 和相关的“sudo adduser <username> Staff”上,请参阅下面的答案以获取更通用的命令),然后您就可以向其写入内容。根本不需要更改权限。 (3认同)
  • 你提到"可能的缺点".有什么可能的缺点?如果我这样做,我可以意外地破坏我的R安装吗? (2认同)

小智 14

如果您使用的是 Windows,则可以以管理员身份运行 R(或 RStudio)。

关闭您的 R,然后转到 R 或 RStudio 图标,右键单击并“以管理员身份打开”。它工作得很好,安装软件包时的所有错误消息都消失了。


Ban*_*nas 10

对于尝试使用这样install.packages()的多个包的人:

install.packages("vcd","vcdExtra","plyr")
Run Code Online (Sandbox Code Playgroud)

并得到了类似的警告:

Warning in install.packages :
  'lib = "vcdExtra"' is not writable
Would you like to use a personal library instead? (yes/No/cancel) cancel
Error in install.packages : unable to install packages
Run Code Online (Sandbox Code Playgroud)

你应该把包名放在一个向量中:

install.packages(c("vcd","vcdExtra","plyr"))
Run Code Online (Sandbox Code Playgroud)

因为第二个参数install.packages()是lib。

  • 我遇到了同样的问题,直到我意识到我应该将包名称包装在 c() 中。所以,`install.packages(c("vcd","vcdExtra","plyr"))`应该可以工作 (3认同)
  • `install.packages("vcd","vcdExtra","plyr")` 应该是 `install.packages(c("vcd","vcdExtra","plyr"))`,` install.packages` 是 `lib` (2认同)

use*_*389 9

问题是默认安装位置是您没有写入权限的地方。

解决方案是使用您拥有写入权限的安装位置。

具体来说,我建议使用以下命令在不需要特殊权限的地方创建个人库文件夹,并且下次启动 R 时会自动检测到该文件夹​​:

dir.create(Sys.getenv("R_LIBS_USER"), recursive = TRUE)  # create personal library
.libPaths(Sys.getenv("R_LIBS_USER"))  # add to the path

install.packages("randomForest")  # install like always
library(randomForest)  # use library like always
Run Code Online (Sandbox Code Playgroud)

调用dir.create遵循此 faq 中的建议创建一个根据 命名的文件夹Sys.getenv("R_LIBS_USER")。这是一个不错的选择,因为它将在 R 的下一次启动时找到,因此您将能够使用install.packages并且library无需指定特殊位置。该.libPaths函数调用让我们避免立即加入新文件夹添加到库路径重启R。前两行仅在您尚未创建个人库时才需要,但重复运行它们没有坏处。之后,安装包和使用库就可以照常进行了。


Rob*_*Sim 8

将自己添加到名为"staff"的组中

sudo usermod -a -G staff your_user_name
Run Code Online (Sandbox Code Playgroud)

将your_user_name替换为您的登录用户名,然后注销并重新登录.

不要使用chmod 777,这违反了安全性和btw.完全没有意义!!!


sha*_*ker 5

这就是说的意思。您在该文件夹中没有写权限。您需要更改该文件夹的权限,或者更改R库的位置。