Linux的非root用户居然不能安装scater包吗
后起之秀奔涌而至,欢迎大家在《生信技能树》的舞台分享自己的心得体会!
最近打算利用生信技能树提供的福利服务器做一些单细胞研究,下载好了数据,打开R准备分析的时候,发现没有‘scater’包。想着作为生信技能树的老粉丝,安装R包应该难不倒我。
首先打开R,输入代码:install.packages('scater') 然后就报错了,如下:
Installing package into ‘/home/data/gma44/R/x86_64-pc-linux-gnu-library/4.0’ (as ‘lib’ is unspecified) Warning message: package ‘scater’ is not available for this version of R
A version of this package for your version of R might be available elsewhere, see the ideas at https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages
报错,这个比较常见,是我自己把包的类型搞错了,所以换BiocManager::install("scater") 应该就好了。
清华镜像下载速度很快:
本来以为是就这样成功了,然而,还是安装不了,报错提示有几个依赖包安装失败:
平常遇到这种情况,可以先试着把依赖包按照好:
但是依赖包安装不了,看到报错,私以为是有些包需要更新,但我没有权限。
晚上11点,留言向管理员申请求助,本来想着第二天的时候可以帮忙安装一下。
没想到Jimmy老师和卖萌哥很快就回复我了,他们没有直接安装这个包,而是非常耐心的帮我分析原因,希望能教会我解决这个问题。依次核查了依赖包的问题,安装路径(> .libPaths())的问题等。期间卖萌哥还自己安装了一遍都没有报错。
这就很奇怪。那问题应该还在我身上,我试着把没有权限更新的R包安装到了自己的目录里:
a<- c("bayestestR", "boot", "brio", "broom", "class", "cli", "cluster", "clusterProfiler", "coin", "correlation", "cpp11", "crayon", "DelayedArray", "DescTools", "dplyr", "effectsize", "enrichplot", "fastmap", "forcats", "genefilter", "gert", "ggstatsplot", "htmltools", "insight", "ipmisc", "knitr", "leiden", "libcoin", "lifecycle", "MASS", "MatrixGenerics", "matrixStats", "memoise", "mime", "multcomp", "nlme", "nnet", "pairwiseComparisons", "performance", "promises", "quantreg", "rappdirs", "rcompanion", "RcppArmadillo", "RSQLite", "rstatix", "Seurat", "shiny","spatial", "spatstat.data", "spatstat.utils", "statsExpressions", "testthat", "tibble","tidyBF", "usethis", "waldo", "withr", "WRS2", "xfun","scater")
BiocManager::install(a)
几乎所有的R包都能正常安装,唯独"lifecycle"包安装报错:
Error in unloadNamespace("lifecycle") : namespace ‘lifecycle’ is imported by ‘scales’, ‘pillar’, ‘tibble’, ‘dplyr’ so cannot be unloaded
上网查了如何解除依赖的方法:如unload,detach,在Rstudio的R包前取消打钩等,再重新安装依然报错。
这时候才想起来,是不是自己的设置有问题,回头重新看.Rprofile
usethis::edit_r_profile()
看到自己早前预先加载了一些R包,后来自己也忘记了
#设置镜像
options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor/")
options("repos" = c(CRAN="http://mirrors.cloud.tencent.com/CRAN/"))
options("repos" = c(CRAN="https://mirrors.aliyun.com/CRAN/"))
options(download.file.method = 'libcurl')
options(url.method='libcurl')
suppressMessages(suppressWarnings((Sys.setlocale("LC_TIME", "en_US.UTF-8"))))
#加载包
suppressMessages(suppressWarnings(library(ggplot2, quietly = T)))
suppressMessages(suppressWarnings(library(dplyr, quietly = T)))
我把预加载的R包注释掉之后,BiocManager::install("scater")就顺利安装了。
回头看看,预加载这个事情其实并没有省下多少事情,反倒给自己添了一些麻烦。
为什么只有我安装不了‘scater’包呢?错还在自己太偷懒。