155-一个R包怎么也安装不上,那就本地安装呗?

刘小泽写于19.12.29 今天看到一位朋友的一个R包安装了很多遍,总是显示某个路径写不进去。但是他的其他R包都是可以顺利安装的,如果要坚持安装好这么包,怎么办?

另外,其中会包含其他的R语言小技巧

问题

hugene10sttranscriptcluster.db为例,可以看到现在是没有这个包的

image-20191229103913166

正常情况下,直接使用BiocManager::install("hugene10sttranscriptcluster.db")方法去安装,一般没有问题。

但是如果报错信息提示

# installation path not writeable, unable to update packages: ...

也就是某个路径写入不进去(Windows电脑此问题居多)

来看一下我们包的默认安装路径:

.libPaths()
# 比如我的是:
 "/Library/Frameworks/R.framework/Versions/3.6/Resources/library"

【附】如果想修改默认的R包安装路径,可以看 R小技巧-R包的多版本控制

# 先看看当前有什么路径
.libPaths()
# 然后加入新路径
myPaths <- .libPaths()  
# 例如新路径是:~/R/3.6.0/library
new <- c('~/R/3.6.0/library')
myPaths <- c(myPaths, new) 
.libPaths(myPaths) 

再用命令行看看我们现在有没有这个包

find /Library/Frameworks/R.framework/Versions/3.6/Resources/library -name "hugene*.db"

image-20191229105936705

可以看到,只有hugene20sttranscriptcluster.db ,而没有hugene10sttranscriptcluster.db

如何解决这个问题?

  • 如果之前使用了原始方法安装过,那么先把这个安装包删掉,完全从头开始:

    remove.packages("hugene10sttranscriptcluster.db")
    
  • 如果之前没有装过,也可以直接从这里开始,即本地安装

第一步 去Bioconductor下载tar.gz安装包

还是以这个包为例:

http://bioconductor.org/packages/release/data/annotation/html/hugene10sttranscriptcluster.db.html

image-20191229104416200

把这个包放在一个绝对能够读取的路径,比如:下载桌面等等

第二步 一句话本地安装

比如我将这个安装包放在了~/Download👇下面

install.packages("/home/Downloads/hugene10sttranscriptcluster.db_8.7.0.tar.gz",repos = NULL, type="source")
  • 注意点一「加了两个参数」 repos = NULL, type="source"

  • 注意点二「路径的写法」 mac / linux 的路径是:/home/d1/hugene10sttranscriptcluster.db_8.7.0.tar.gz

    windows的路径是:C:\\hugene10sttranscriptcluster.db_8.7.0.tar.gz

image-20191229105036689

最后,再用命令行看一下

image-20191229110046204

安装完后,安装包可以保存也可以删掉了

如果安装还错…

安装这个hugene10sttranscriptcluster.db 依然出现了报错。最开始我的直觉让我关注:Error,但是它列出来的AnnotationDbi是安装过的,也能加载。

那么只能继续看报错了,极容易忽视的问题就出在:vctrs ,我以为是一个动态链接库(DLL),但实际上人家是一个R包,安装一下这个R包,问题也就迎刃而解。

image-20191229135544284

附加

如何查看某个包的依赖包?

可以使用gtools (https://www.rdocumentation.org/packages/gtools/versions/3.5.0/topics/getDependencies)

install.packages("gtools")
library(gtools)

> getDependencies("hugene10sttranscriptcluster.db")
 [1] "magrittr"      "assertthat"    "backports"     "ellipsis"      "glue"         
 [6] "zeallot"       "bit"           "prettyunits"   "rlang"         "vctrs"        
[11] "digest"        "bit64"         "blob"          "memoise"       "pkgconfig"    
[16] "Rcpp"          "BH"            "plogr"         "BiocGenerics"  "Biobase"      
[21] "IRanges"       "DBI"           "RSQLite"       "S4Vectors"     "AnnotationDbi"
[26] "org.Hs.eg.db" 
Yunze Liu
Yunze Liu
Bioinformatics Sharer

Co-founder of Bioinfoplanet(生信星球)

Next
Previous

Related