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

Ele*_*ows 18 r bioconductor mgcv

我正在尝试使用他们网站上的代码将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,
Run Code Online (Sandbox Code Playgroud)

生存

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

> 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
Run Code Online (Sandbox Code Playgroud)

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

> 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"         
Run Code Online (Sandbox Code Playgroud)

但是当我去安装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
Run Code Online (Sandbox Code Playgroud)

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

Del*_*eet 14

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

  • 你不需要管道(或`magrittr`):`installed.packages()[,c("Package","LibPath")]`做同样的事情 (2认同)

Kas*_*sen 8

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

通常,我建议不要更改系统文件夹的权限,因为像R这样的程序应该在没有管理权限的情况下也能正常工作。

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

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

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

remove.packages(c("Matrix", "mgcv", "survival"))
Run Code Online (Sandbox Code Playgroud)

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

install.packages(c("Matrix", "mgcv", "survival"))
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

library(BiocInstaller)
biocLite(c("PACKAGE1", "PACKAGE2"))
Run Code Online (Sandbox Code Playgroud)

如果无法安装在本地目录中,请再次将lib =参数添加到biocLite()commnad中。

  • 在 Linux 上,这些 R 软件包作为操作系统软件包安装,即 r-base 依赖于 r-cran-matrix、r-cran-survival 和 r-cran-mgcv 以及其他一些软件包。这种方法的问题是,删除相应的 R 包后,操作系统包将被破坏。此外,在下一次操作系统软件包升级期间,R 软件包将再次安装到系统目录中,从而导致 Bioconductor 出现问题。 (3认同)

小智 6

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


Mar*_*gan 2

看起来几个“推荐”包安装在两个位置 - 可能由管理员帐户安装在您没有写访问权限的目录中,然后由 RStudio 安装在您有写访问权限的目录中。biocLite()正在抱怨前者。

除非biocLite()抱怨某个 Bioconductor 软件包无法安装(不同于无法更新),否则没有问题,基本的 Bioconductor 软件包已成功安装。查看https://support.bioconductor.org以获取未来与 Bioconductor 相关的支持。