簡體   English   中英

安裝路徑不可寫R,無法更新包

[英]installation path not writable R, unable to update packages

我正在嘗試使用他們網站上的代碼將 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 應該在沒有額外管理權限的情況下工作。

因此,我同樣建議不要使用管理權限安裝軟件包,因為您以后每次必須更新這些軟件包時都需要這樣做!

要回溯此問題並防止在以后的更新中將其最小化,您應該執行以下步驟:

  1. 請注意哪些軟件包無法更新(已在錯誤消息中顯示)。
  2. 使用.libPaths()找到安裝所有 R 包的文件夾。 這應該提供兩個結果,一個目標在您的主文件夾和一個系統文件夾

“/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/XX"添加到步驟 3 中的任一安裝函數中。此參數明確說明安裝在您的主文件夾中。

這種方法有一個問題,至少在 Arch Linux 上的官方 R 存儲庫中:每當 R 更新時,更新的版本仍然包含系統文件夾中的包,沒有管理權限就無法更新。 因此,對於每個 R 更新,必須重復此過程。 我特別看你survival !!!

*編輯:重要的是要注意biocLite不再是安裝 BioConductor 軟件包的推薦工具。 您應該改用BiocManager ,它位於官方 CRAN 存儲庫( install.packages("BiocManager") )中。

**第二次編輯:由於這個答案仍然收到投票,我已經更新並清理了答案。

這對我來說是一個許可問題。 首先,我使用installed.packages()[, c("Package", "LibPath")]確定了軟件包的安裝位置。 這會輸出一個包含包名稱和位置的長 2 列矩陣。 然后你會看到有問題的包在哪里。 就我而言,它們位於/usr/lib/R/site-library/usr/lib/R/library 然后我通過chmod更改了這些文件夾的權限(我在主 R 文件夾上使用了chmod -R 777 ,這是我的個人計算機,所以我認為這里的安全性不是一個大問題)。

如果您在 Windows 上運行 R/Rstudio,則只需以管理員身份打開 R/Rstudio。 右鍵單擊該圖標,然后以管理員身份運行

看起來有幾個“推薦”的軟件包安裝在兩個地方——可能是管理員帳戶安裝在您沒有寫入權限的目錄中,然后是 RStudio 安裝在您有寫入權限的目錄中。 biocLite()抱怨前者。

除非biocLite()抱怨無法安裝 Bioconductor 包(與無法更新不同),否則沒有問題,基本 Bioconductor 包已成功安裝。 查看https://support.bioconductor.org以獲取未來與 Bioconductor 相關的支持。

一種解決方案是使用管理員權限打開終端並加載 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/

我在使用其他 Bioconductor 軟件包時遇到了類似的問題,解決方案比我想象的要簡單。 我必須安裝一些在我的日志中指出的操作系統包: libcurl-devlibcurl4-openssl-devlibssl-dev

我的建議是檢查您的 R 日志並查找“配置失敗,因為未找到 [PACKAGE]。嘗試安裝”。

由於使用 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-mingw32arch x86_64os mingw32system x86_64, mingw32version.string R version 3.6.1 (2019-07-05)

我受到 Kasper Thystrup Karstensen 答案的啟發

嘗試添加參數force = TRUE

BiocManager::install("XX", force = TRUE )

每當您想處理需要安裝軟件包的 R 代碼時:-

  • Windows:以“以管理員身份運行”打開 R-studio [右鍵單擊圖標]
  • Linux:以 sudo 用戶身份運行; 否則從管理員那里獲得寫作權限

我遇到了同樣的問題,答案是給Root的Root Access ,即以管理員身份運行R或Rstudio。

檢查這個問題: 安裝目錄不可寫,無法更新軟件包'boot','class','KernSmooth','mgcv','nnet','rpart','spatial'

解決此問題的正確方法如下:

  1. 以管理員身份啟動R: sudo R
  2. 在R控制台中執行: update.packages()

總結是,需要一些最新的軟件包,並在管理模式下更新這些軟件包可以解決此問題 `

Ubuntu:

sudo apt install libcurl-dev

軟呢帽:

sudo dnf install libcurl-devel

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM