安装路径不可写R,无法更新包

问题描述 投票:18回答:7

我正在尝试使用他们网站上的代码将Bioconductor安装到R中。当我输入代码时(见下文),我收到一条错误消息,指出某些软件包无法更新,安装路径是不可写的。

> ## try http:// if https:// URLs are not supported
> source("https://bioconductor.org/biocLite.R")
Bioconductor version 3.4 (BiocInstaller 1.24.0), ?biocLite for help
> biocLite()
BioC_mirror: https://bioconductor.org
Using Bioconductor 3.4 (BiocInstaller 1.24.0), R 3.3.2 (2016-10-31).
installation path not writeable, unable to update packages: Matrix, mgcv,

生存

我可以通过转包/安装包来安装这些包。

> utils:::menuInstallPkgs()
trying URL    'https://www.stats.bris.ac.uk/R/bin/windows/contrib/3.3/Matrix_1.2-8.zip'
Content type 'application/zip' length 2775038 bytes (2.6 MB)
downloaded 2.6 MB

trying URL 'https://www.stats.bris.ac.uk/R/bin/windows/contrib/3.3/mgcv_1.8-  16.zip'
Content type 'application/zip' length 2346257 bytes (2.2 MB)
downloaded 2.2 MB

trying URL     'https://www.stats.bris.ac.uk/R/bin/windows/contrib/3.3/survival_2.40-1.zip'
Content type 'application/zip' length 5109948 bytes (4.9 MB)
downloaded 4.9 MB

package ‘Matrix’ successfully unpacked and MD5 sums checked
package ‘mgcv’ successfully unpacked and MD5 sums checked
package ‘survival’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:\Users\stxeb8\AppData\Local\Temp\Rtmp2tQZ4v\downloaded_packages

然后我可以去打包/加载包并成功加载它们并搜索并看到包在那里。

> local({pkg <- select.list(sort(.packages(all.available =   TRUE)),graphics=TRUE)
+ if(nchar(pkg)) library(pkg, character.only=TRUE)})
Loading required package: nlme
This is mgcv 1.8-16. For overview type 'help("mgcv-package")'.
> local({pkg <- select.list(sort(.packages(all.available = TRUE)),graphics=TRUE)
+ if(nchar(pkg)) library(pkg, character.only=TRUE)})
> local({pkg <- select.list(sort(.packages(all.available = TRUE)),graphics=TRUE)
+ if(nchar(pkg)) library(pkg, character.only=TRUE)})
> local({pkg <- select.list(sort(.packages(all.available =     TRUE)),graphics=TRUE)
+ if(nchar(pkg)) library(pkg, character.only=TRUE)})
> search()
[1] ".GlobalEnv"            "package:survival"      "package:mgcv"         
[4] "package:nlme"          "package:Matrix"        "package:BiocInstaller"
[7] "package:stats"         "package:graphics"      "package:grDevices"    
[10] "package:utils"         "package:datasets"      "package:methods"      
[13] "Autoloads"             "package:base"         

但是当我去安装bioconductor时,它给了我同样的错误信息,即Matrix,mgcv和生存无法更新。

> ## try http:// if https:// URLs are not supported
> source("https://bioconductor.org/biocLite.R")
Bioconductor version 3.4 (BiocInstaller 1.24.0), ?biocLite for help
> biocLite()
BioC_mirror: https://bioconductor.org
Using Bioconductor 3.4 (BiocInstaller 1.24.0), R 3.3.2 (2016-10-31).
installation path not writeable, unable to update packages: Matrix, mgcv,
  survival

我能做些什么才能更新这些包,以便安装bioconductor?

r bioconductor mgcv
7个回答
14
投票

这对我来说是一个许可问题。首先,我使用installed.packages()[, c("Package", "LibPath")]确定了软件包的安装位置。这将输出一个长2列矩阵,其中包含包的名称和位置。然后你会看到有问题的包裹在哪里。在我的情况下,他们在/usr/lib/R/site-library/usr/lib/R/library。然后我通过chmod更改了这些文件夹的权限(我在主R文件夹上使用了chmod -R 777,这是我的个人计算机,所以我认为安全性并不是一个大问题)。


6
投票

就像Martin Morgan回答的那样,尽管有错误消息,但应该安装Bioconductor软件包。但是,在进行将来的软件包更新时会继续发生这种情况

一般来说,我建议不要更改系统文件夹的权限,因为像R这样的程序应该在没有管理权的情况下运行良好。

如果您避免更改系统文件夹的权限,我同样建议不要使用管理权限来安装软件包,因为将来每次必须更新这些软件包时都需要这样做!

解决此问题的最佳方法是重新安装以前安装了管理权限的软件包。可以从Bioconductor生成的错误代码中识别包。在您的情况下,这些包是Matrix, mgcv, survival - 请注意CRAN和Bioconductor包之间的错误消息不同,它包括以前安装了管理权限的所有包!

要删除报告的软件包,请打开具有管理权限的R(最后有希望)并使用remove.packages()删除所有报告的软件包 - 包括Bioconductor软件包。对于你的情况:

remove.packages(c("Matrix", "mgcv", "survival"))

在重新安装这些软件包之前,请退出然后重新启动R而不使用管理权限。您现在可以重新安装CRAN包。

install.packages(c("Matrix", "mgcv", "survival"))

系统将询问您是否要在本地目录中安装软件包,键入yes

如果安装不成功,请找到本地R目录(在home / user文件夹中)并将其添加为lib =。在linux上,命令可能如下所示:

install.packages(c("Matrix", "mgcv", "survival"), lib = "~/R/x86_64-pc-linux-gnu-library/3.5")

如果Bioconductor软件包之前已安装了管理权限:

library(BiocInstaller)
biocLite(c("PACKAGE1", "PACKAGE2"))

再次将qazxsw poi参数添加到qazxsw poi命令,否则无法安装在本地目录中。


2
投票

看起来好像有几个“推荐”的软件包安装在两个地方 - 可能是您没有写入权限的目录中的管理员帐户,然后是RStudio,在您具有写入权限的目录中。 lib =抱怨前者。

除非biocLite()抱怨无法安装的Bioconductor封装(不同于无法更新),否则没有问题,并且已成功安装基本的Bioconductor封装。查看biocLite()以获取与Bioconductor相关的未来支持。


0
投票

一种解决方案是打开终端并使用管理员权限加载R.

biocLite()

然后你可以更新。但要小心。这可以由管理员在应该由用户拥有的目录中创建包。

在这种情况下,不要以root身份加载R(在下次更新之前解决问题),请检查.libPaths()。您将拥有一个目录列表。

https://support.bioconductor.org

在我的例子中,“/ usr / lib / R / library”中的所有包都归root所有,除了一个之外的所有包都归正常用户(不是root)所有,位于“/ home / itsame / R / x86_64-pc-linux -gnu库/ 3.4" 。

如果您拥有管理员权限,一个简单的解决方案可能是在所有地方运行chown:例如,我无法更新curl包。我用了:

sudo R
update.packages()
source("https://bioconductor.org/biocLite.R")
biocLite()

0
投票

如果您在Windows上运行R / Rstudio,则只需以管理员身份打开R / Rstudio。右键单击该图标,然后以管理员身份运行


-1
投票

我遇到了同样的问题,答案是给管理员运行R或Rstudio的Root Access。

检查这个问题:.libPaths() "/home/it_s_me/R/x86_64-pc-linux-gnu-library/3.4" "/usr/lib/R/library"


-1
投票

解决此问题的正确方法如下:

  1. 以管理员身份启动R:sudo chown -R it_s_me /home/it_s_me/R/x86_64-pc-linux-gnu-library/3.4/curl/
  2. 在R控制台中执行:installed directory not writable, cannot update packages 'boot', 'class', 'KernSmooth', 'mgcv', 'nnet', 'rpart', 'spatial'

总结是,需要一些最新的软件包,并在管理模式下更新这些软件包可以解决此问题`

© www.soinside.com 2019 - 2024. All rights reserved.