如何解决package 'xxx' is not

作者: 石博士 | 来源:发表于2018-10-29 14:51 被阅读2124次

    安装R语言包的时候,经常出现:package 'xxx' is not available (for R version x.y.z),搞得人心烦意乱,安装一个软件要个把小时,坑爹啊?
    到底要怎么解决这个问题呢?一般有一下思路:

    低级错误

    检查拼写是否正确?注意大小写

    其实已经安装好了,退出R再试一次

    • 如果出现错误
    Encountered below error. Any suggestions on how to resolve appreciated.
    
    shiny::runApp()
    Error in get(Info[i, 1], envir = env) : lazy-load database 'XX' is corrupt
    In addition: Warning message:
    In get(Info[i, 1], envir = env) : internal error -3 in R_decompress1
    

    其实只要退出R,再试一次就可以了:The internal error -3 often happens when you use install_github to install a package that's currently loaded; try restarting R and running the app again.

    安装方式

    源码安装

    • 没有windows/mac/linux的binary文件,可以用源码安装:
    
    install.packages("foobarbaz",type="source")
    
    

    需要安装相应编译器

    
    * installing *source* package ‘rgeos’ ...
    
    configure: CC: gcc -m64 -std=gnu99
    
    configure: CXX: g++ -m64
    
    configure: rgeos: 0.4-2
    
    checking for /usr/bin/svnversion... yes
    
    cat: inst/SVN_VERSION: No such file or directory
    
    configure: svn revision: 
    
    checking for geos-config... no
    
    no
    
    configure: error: geos-config not found or not executable.
    
    ERROR: configuration failed for package ‘rgeos’
    
    * removing ‘/home/shiyong/R/x86_64-redhat-linux-gnu-library/3.5/rgeos’
    
    
    
    下载的程序包在
    
     ‘/tmp/RtmpUwOGCq/downloaded_packages’里
    
    Warning message:
    
    In install.packages("rgeos", repos = "http://R-Forge.R-project.org", :
    
      安装程序包‘rgeos’时退出狀態的值不是0
    
    
    • 如果出现上面的错误,就安装好geos-devel就可以了
    
    yum install -y geos-devel
    
    

    没有源码,但是有binary文件

    • 可以把源码安装关了
    
    options(install.packages.check.source = "no")
    
    

    找错地方了

    找对repository

    • 有的包不在CRAN里面
      安装bioconductor的包,必须
    source("https://bioconductor.org/biocLite.R")
    

    否则可能报错:

    
    ERROR: compilation failed for package
    
    
    • 设置repository的方法
    setRepositories()
    
    • 查看你要的package在不在这个repository里面,以“foobarbaz”为例
    
    ap <- available.packages()
    
    "foobarbaz" %in% rownames(ap)
    
    

    包在github等网站上面

    • package在github/Bitbucket/Gitorious上面
    
    library(remotes)
    
    install_github("packageauthor/foobarbaz")
    
    install_github("cran/foobarbaz")
    
    install_bitbucket("packageauthor/foobarbaz")
    
    install_gitorious("packageauthor/foobarbaz")
    
    

    package在一个非标准的repository里,而不是CRAN

    
    install.packages("Rbbg", repos = "http://r.findata.org")
    
    

    版本问题

    需要更新R或Bioconductor了

    • 查看依赖的版本
    
    ap["foobarbaz","Depends"]
    
    

    package过期了

    
    library(remotes)
    
    install_version("foobarbaz","0.1.2")
    
    

    最后大招

    用conda安装,如

    conda install bioconductor-deseq2
    

    手动安装:

    install.packages("local.tar.gz",repos=NULL, type="source")
    

    安装好依赖包

    install.packages("ggplot2",dependencies=T)
    

    放弃

    • 想想,是不是不需要这个package也可以解决问题?

    Changelog:

    • 作者:石勇(sandy,石博士)
    • 时间:20181030
    • 参考:stackoverflow

    相关文章

      网友评论

        本文标题:如何解决package 'xxx' is not

        本文链接:https://www.haomeiwen.com/subject/espbtqtx.html