41

我正在尝试使用他们网站上的代码将 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 和survival 无法更新。

> ## 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?

4

9 回答 9

33

一般来说,我建议不要更改系统文件夹中的权限,因为 R 应该在没有额外管理权限的情况下工作。

因此,我同样建议不要使用管理权限安装软件包,因为您以后每次必须更新这些软件包时都需要这样做!

要回溯此问题并防止在以后的更新中将其最小化,您应该执行以下步骤:

  1. 请注意哪些软件包无法更新(已在错误消息中显示)。
  2. 使用 .找到所有 R 包安装的文件夹.libPaths()。这应该提供两个结果,一个目标在您的主文件夹和一个系统文件夹

“/home/USER/R/x86_64-pc-linux-gnu-library/XX” “/usr/lib/R/library”

  1. install.packages(c("PKG1", "PKG2", "PKG3"))使用或BiocManager::install(c("PKG1", "PKG2", "PKG3"))*安装软件包
  2. 仅当您具有管理员权限时:使用管理员权限 (sudo) 手动从系统文件夹(“/usr/lib/R/library”)中删除较旧的包文件夹,或者最后一次输入具有管理员权限的 R并运行remove.packages(c("PKG1", "PKG2", "PKG3"), lib = "/usr/lib/R/library")

*如果安装路径有问题,, lib = "/home/USER/R/x86_64-pc-linux-gnu-library/X.X"请在步骤 3 中将参数添加到任一安装函数。此参数明确声明要安装在您的主文件夹中。

这种方法有一个问题,至少在 Arch Linux 上的官方 R 存储库中:每当 R 更新时,更新的版本仍然包含系统文件夹中的包,没有管理权限就无法更新。因此,对于每个 R 更新,必须重复此过程。我特别看你survival!!!

*编辑:重要的是要注意biocLite不再是安装 BioConductor 软件包的推荐工具。您应该改用BiocManager,它位于官方 CRAN 存储库 ( install.packages("BiocManager")) 中。

**第二次编辑:由于这个答案仍然收到投票,我已经更新并清理了答案。

于 2018-05-16T07:02:11.813 回答
17

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

于 2017-07-24T20:13:39.680 回答
8

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

于 2019-05-14T08:15:38.940 回答
2

我在使用其他 Bioconductor 软件包时遇到了类似的问题,解决方案比我想象的要简单。我必须安装一些在我的日志中指出的操作系统包:libcurl-dev, libcurl4-openssl-dev, libssl-dev.

我的建议是检查您的 R 日志并查找“配置失败,因为未找到 [PACKAGE]。尝试安装”。

于 2020-08-17T21:50:41.143 回答
2

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

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

于 2017-01-24T22:20:00.270 回答
2

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

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

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

在这种情况下,不要将 R 作为 root 加载(这会在下一次更新之前解决问题),而是检查 .libPaths()。您将有一个目录列表。

.libPaths()
"/home/it_s_me/R/x86_64-pc-linux-gnu-library/3.4" "/usr/lib/R/library"

就我而言,“/usr/lib/R/library”中的所有软件包都归root所有,除一个以外的所有软件包都归“/home/itsame/R/x86_64-pc-linux”中的普通用户(不是root)所有-gnu 库/3.4"。

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

sudo chown -R it_s_me /home/it_s_me/R/x86_64-pc-linux-gnu-library/3.4/curl/
于 2018-03-19T15:10:47.273 回答
1

由于使用 R 3.6.1 版本,脚本http://bioconductor.org/biocLite.R返回此消息“错误:使用 R 版本 3.5 或更高版本,请使用 BiocManager 安装 Bioconductor 包;请参阅https://bioconductor.org/ install " 我通过以下步骤解决了这个问题:

  1. 获取 R 用于安装库的目录列表,并使用以下命令选择具有写入权限的目录:.libPaths()
  2. 使用以下命令安装“BiocManager”库:install.packages("BiocManager")
  3. 通过使用以下命令强制具有写入权限的目录来安装库“bioconductor”:BiocManager::install("Rgraphviz", lib = "C:/Users/tizbet/Documents/R/win-library/3.6")

我从事以下 R 安装:

platform x86_64-w64-mingw32, arch x86_64, os mingw32, system x86_64, mingw32,version.string R version 3.6.1 (2019-07-05)

我受到 Kasper Thystrup Karstensen 答案的启发

于 2019-08-22T13:51:02.657 回答
0

尝试添加参数force = TRUE

BiocManager::install("XX", force = TRUE )
于 2021-05-12T11:34:09.293 回答
-1

Ubuntu:

sudo apt install libcurl-dev

软呢帽:

sudo dnf install libcurl-devel
于 2021-05-08T16:55:15.397 回答