【问题标题】:How should I deal with "package 'xxx' is not available (for R version x.y.z)" warning?我应该如何处理“package 'xxx' is not available (for R version x.y.z)”警告?
【发布时间】:2013-03-18 08:43:48
【问题描述】:

【问题讨论】:

  • 请注意,使用 RStudio 时,从 CRAN 以外的其他存储库安装时也会收到此警告。这是我已经报告过几次的错误,但我不知道它是否已经排序。

标签: r installation repository package r-faq


【解决方案1】:

1.你不会拼写

首先要测试的是你是否正确拼写了包名?包名在 R 中是区分大小写的。


2。您没有查看正确的存储库

接下来,您应该检查该软件包是否可用。类型

setRepositories()

另见?setRepositories

查看 R 将在哪些存储库中查找您的包,并可选择选择一些其他存储库。至少,您通常希望选择 CRAN,如果您使用 Windows,则选择 CRAN (extras),如果您进行任何生物学分析,则选择 Bioc* 存储库。

要永久更改此设置,请将setRepositories(ind = c(1:6, 8)) 之类的行添加到您的Rprofile.site 文件中。


3.该软件包不在您选择的存储库中

使用返回所有可用的包

ap <- available.packages()

另请参阅Names of R's available packages?available.packages

由于这是一个大矩阵,您可能希望使用数据查看器来检查它。或者,您可以通过测试行名来快速检查包是否可用。

View(ap)
"foobarbaz" %in% rownames(ap)

或者,可以在浏览器中查看CRANCRAN (extras)BioconductorR-forgeRForgeGitHub 的可用软件包列表。

与 CRAN 镜像交互时您可能会收到的另一个警告消息是:

Warning: unable to access index for repository

这可能表明所选的 CRAN 存储库当前不可用。您可以使用chooseCRANmirror() 选择不同的镜像并再次尝试安装。


软件包不可用的原因有多种。


4.你不想要一个包裹

也许你真的不想要一个包裹。很容易混淆a package and a library 或包和数据集之间的区别。

包是扩展 R 的材料的标准化集合,例如提供代码、数据或文档。库是 R 知道可以找到它可以使用的包的地方(目录)

要查看可用数据集,请键入

data()

5. R 或 Bioconductor 已过时

它可能依赖于更新版本的 R(或它导入/依赖的包之一)。看看

ap["foobarbaz", "Depends"]

并考虑将您的 R 安装更新到当前版本。在 Windows 上,这很容易通过 installr 包完成。

library(installr)
updateR()

(当然,您可能需要先install.packages("installr")。)

对于 Bioconductor 软件包,您可能需要更新您的 Bioconductor 安装。

source("http://bioconductor.org/biocLite.R")
biocLite("BiocUpgrade")

6.包已过期

它可能是archived(如果它不再维护并且不再通过R CMD check 测试)。

在这种情况下,您可以使用 install_version() 加载旧版本的包

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

另一种方法是从 GitHub CRAN 镜像安装。

library(remotes)
install_github("cran/foobarbaz")

7.没有 Windows/OS X/Linux 二进制文件

它可能没有Windows binary,因为它需要 CRAN 没有的其他软件。此外,某些软件包只能通过某些或所有平台的源获得。在这种情况下,CRAN (extras) 存储库中可能有一个版本(参见上面的setRepositories)。

如果包需要编译代码(例如 C、C++、FORTRAN),则在 Windows 上安装 Rtools 或在 OS X 上安装 developer tools 随附的 XCode,并通过以下方式安装包的源版本:

install.packages("foobarbaz", type = "source")

# Or equivalently, for Bioconductor packages:
source("http://bioconductor.org/biocLite.R")
biocLite("foobarbaz", type = "source")

在 CRAN 上,您可以通过查看描述中的 NeedsCompilation 标志来判断是否需要特殊工具从源代码构建包。


8.该软件包位于 GitHub/Bitbucket/Gitorious

它可能在 GitHub/Bitbucket/Gitorious 上有一个存储库。这些包需要安装remotes 包。

library(remotes)
install_github("packageauthor/foobarbaz")
install_bitbucket("packageauthor/foobarbaz")
install_gitorious("packageauthor/foobarbaz")

(与installr一样,您可能需要先install.packages("remotes")。)


9.包没有源版本

虽然您的软件包的二进制版本可用,但源版本不可用。您可以通过设置关闭此检查

options(install.packages.check.source = "no")

this SO answer by imanuelc?install.packages 的详细信息部分所述。


10.该软件包位于非标准存储库中

您的包位于非标准存储库中(例如Rbbg)。假设它合理地符合 CRAN 标准,您仍然可以使用install.packages 下载它;您只需指定存储库 URL。

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

另一方面,RHIPE 不在类似 CRAN 的存储库中,并且有自己的 installation instructions

【讨论】:

  • 我认为值得一提的是installr 仅适用于 Windows
【解决方案2】:

在最新的 R (3.2.3) 中有一个错误,有时会阻止它找到正确的包。解决方法是手动设置存储库:

install.packages("lubridate", dependencies=TRUE, repos='http://cran.rstudio.com/')

other question找到解决方案

【讨论】:

  • 怀疑是这样的。然而,这似乎是 r-studio 中的一个错误。我刚刚测试过,如果我只是从终端启动 R,我不需要设置存储库——仅从 r-studio 内启动。
  • 在安装包rbokeh时对我不起作用。
【解决方案3】:

这个解决方案可能会破坏 R,但这是一个最简单的解决方案,它在 99% 的时间内都有效。

你需要做的只是:

install.packages('package-name',repos='http://cran.us.r-project.org')

正如作者在here上提到的那样

【讨论】:

    【解决方案4】:

    Rlibcurl 的某些版本似乎存在问题。我在Mac (R version 3.2.2)Ubuntu (R version 3.0.2) 上遇到了同样的问题,在这两种情况下,只需在install.packages 命令之前运行它就可以解决这个问题

    options(download.file.method = "wget")
    

    该解决方案是一位朋友提出的,但是我在任何论坛中都找不到它,因此将此答案提交给其他人。

    【讨论】:

      【解决方案5】:

      11. R(或其他依赖项)已过期,您不想更新它。

      警告这并不是最佳实践。

      • 下载包源。
      • 导航到DESCRIPTION 文件。
      • 使用文本编辑器删除有问题的行,例如

        Depends: R (>= 3.1.1)
        
      • 从本地安装(即从DESCRIPTION 的父目录),例如

        install.packages("foo", type="source", repos=NULL)
        

      【讨论】:

      • 通常说对 R 版本的依赖是有原因的,检查这种更改可能会破坏什么可能是明智的。
      • install.packages("local/pkg",repos=NULL) 就够了
      【解决方案6】:
      1. 访问https://cran.r-project.org/src/contrib/Archive/
      2. 使用Ctrl + F 找到您要安装的包
      3. 点击包名
      4. 确定要安装的版本
      5. 打开 RStudio
      6. 输入“install.packages("https://cran.r-project.org/src/contrib/Archive/[NAME OF PACKAGE]/[VERSION NUMBER].tar.gz", repos = NULL, type="source")

      在某些情况下,你需要提前安装好几个包才能使用你想要使用的包。

      例如,我需要安装7个包(SejonghashrJavatauRSQLitedevtoolsstringr)来安装KoNLP包。

      install.packages('Sejong')
      install.packages('hash')
      install.packages('rJava')
      install.packages('tau')
      install.packages('RSQLite')
      install.packages('devtools')
      install.packages('stringr')
      
      library(Sejong)
      library(hash)
      library(rJava)
      library(tau)
      library(RSQLite)
      library(devtools)
      library(stringr)
      
      install.packages("https://cran.r-project.org/src/contrib/Archive/KoNLP/KoNLP_0.80.2.tar.gz", repos = NULL, type="source")
      library(KoNLP)
      

      【讨论】:

        【解决方案7】:

        发生在我身上的一件事是我的 linux 发行版提供的 R 版本(Ubuntu 14.04 提供的 R 版本 3.0.2)对于 CRAN 上可用的最新版本的软件包来说太旧了(在我的情况下,@ 987654322@ 版本 1.8.3 截至今天)。解决方案是使用我的发行版的打包系统,而不是尝试从 R 安装(apt-get install r-cran-plyr 让我获得了 plyr 的 1.8.1 版)。也许我可以尝试使用updateR() 更新 R,但我担心这样做会干扰我的发行版的包管理器。


        编辑(2020 年 4 月 8 日):在 CRAN 中更新软件包后,我最近遇到了一个问题,据报道我的 R 版本(3.6.3,Debian stretch 最新支持)不可用的软件包 (XML) .这是非常出乎意料的,因为我之前已经成功安装过它(在相同版本的 R 和相同的操作系统上)。

        由于某种原因,该软件包仍然存在,但 install.packages 只查看更新(且不兼容)的版本。解决方法是找到兼容版本的网址,强制install.packages使用,如下:

        install.packages("https://cran.r-project.org/src/contrib/Archive/XML/XML_3.99-0.3.tar.gz", repos=NULL, type="source", ask=FALSE)
        

        【讨论】:

        【解决方案8】:

        这为我节省了大量调试问题的时间。在许多情况下,只是过时的镜子。此函数可以使用https://cran.rstudio.com/ 安装多个包及其依赖项:

        packages <- function(pkg){
            new.pkg <- pkg[!(pkg %in% installed.packages()[, "Package"])]
            if (length(new.pkg))
                install.packages(new.pkg, dependencies = TRUE, repos='https://cran.rstudio.com/')
            sapply(pkg, require, character.only = TRUE)
        }
        
        packages(c("foo", "bar", "baz"))
        

        【讨论】:

          【解决方案9】:

          当我收到相同的警告时,我终于可以在 R-3.4.1 中安装 psych 包了

          1:用 Google 搜索该软件包。

          2:手动下载,扩展名为 tar.gz

          3:在 R 中选择“Package Archive File (.zip;.tar.gz)”选项来安装包

          4:本地浏览到下载的地方点击安装

          您可能会收到警告:依赖项 'xyz' 不适用于软件包,然后首先从存储库中安装它们,然后执行步骤 3-4 .

          【讨论】:

            【解决方案10】:

            从源代码安装 R 包时,我犯了一个错误,忘记输入repos=NULL。在这种情况下,错误消息有点误导:package 'foobarbaz' is not available (for R version x.y.z)

            问题不是 R 的版本,而是 repos 参数。我做了install.packages('path/to/source/code/of/foobarbaz', type='source', repos=NULL),在这个场合对我有用。

            希望这对某人有所帮助。

            【讨论】:

            • 当我尝试 install.packages('foobarbaz', repos=NULL) 我收到错误“ install.packages("pair", repos = NULL) 中的错误: type == "both" 不能与 'repos = NULL' 一起使用"
            • 感谢您的评论 - 我想我忘了写 type="source" 参数,因为我提到我从源代码安装了这个包,我会编辑答案。
            【解决方案11】:

            我通过仔细遵循 instructions for installing R 在 Ubuntu 上修复了此错误。这包括:

            1. deb http://cran.utstat.utoronto.ca/bin/linux/ubuntu trusty/ 添加到我的/etc/apt/sources.list 文件中
            2. 正在运行sudo apt-get update
            3. 正在运行sudo apt-get install r-base-dev

            对于第 1 步,如果您愿意,可以选择任何 CRAN 下载镜像来代替我在多伦多大学的下载镜像。

            【讨论】:

            • 这种方式确实解决了我的问题,但仍将我的 R 更新到最新版本(从 3.023.4)。如果你想更新你的 R,这是一个不错的方法。
            【解决方案12】:

            我遇到了同样的问题(在 Linux 上),可以通过更改代理设置来解决。 如果您在代理服务器后面,请使用 R 中的Sys.getenv("http_proxy") 检查配置。 在我的~/.Renviron 中,我有以下几行(来自https://support.rstudio.com/hc/en-us/articles/200488488-Configuring-R-to-Use-an-HTTP-or-HTTPS-Proxy)导致问题:

            http_proxy=https://proxy.dom.com:port
            http_proxy_user=user:passwd
            

            改成

            http_proxy="http://user:passwd@proxy.dom.com:port"
            

            解决了这个问题。您可以对https 执行相同操作。

            当我读到“package xxx is not available for r version-x-y-z”时,这不是第一个想法......

            HTH

            【讨论】:

              【解决方案13】:

              另一个原因+解决方案

              尝试在我公司 HPC 上的 RStudio 中安装 pkgdown 时遇到此错误(“包 XXX 不适用于 R 版本 X.X.X”)。

              事实证明,他们在 HPC 上的 CRAN 快照是从 2018 年 1 月(差不多 2 年)开始的,当时确实不存在 pkgdown。这旨在为外行用户控制软件包的来源,但作为开发人员,您在大多数情况下可以通过以下方式进行更改:

              ## checking the specific repos you currently have
              getOption("repos")
              
              ## updating your CRAN snapshot to a newer date
              r <- getOption("repos")
              r["newCRAN"] <- "https://cran.microsoft.com/snapshot/*2019-11-07*/"
              options(repos = r)
              
              ## add newCRAN to repos you can use
              setRepositories()
              

              如果您知道自己在做什么,并且可能需要多个软件包,而这些软件包可能在您的系统的 CRAN 中不可用,您可以在您的项目 .Rprofile 中进行设置。

              如果只是一个包,也许只使用install.packages("package name", repos = "a newer CRAN than your company's archaic CRAN snapshot")

              【讨论】:

                【解决方案14】:

                我发现 #6 package is out of date 与 @Richie Cotton 的优秀解决方案略有不同。

                有时,包维护者可能会显示它不支持的 R 版本差距。在这种情况下,您至少有两个选择:1) 将您的 R 版本升级到目标包已经支持的下一个版本,2) 从可用的旧版本中安装最新版本,以便与您的 R 版本一起使用。

                一个具体的例子:用于数据挖掘的包rattle 的最新 CRAN 版本 5.3.0 不支持 R 版本 3.4,因为它在包版本 5.2.0 (R >= 2.13.0) 之间有很大的更新和 5.3.0 (R >=3.5)。

                在这种情况下,升级 R 安装的替代方案是已经提到的解决方案。安装包devtools,如果你没有它(它包括包remotes),然后安装将在你当前的R中工作的特定版本。你可以在CRAN页面上查找特定包档案的信息.

                library("devtools")
                install_version("rattle", version = "5.2.0", repos = "http://cran.us.r-project.org")
                

                【讨论】:

                  【解决方案15】:

                  就我而言,解决方案是简单地升级 R。

                  【讨论】:

                    【解决方案16】:

                    当我使用 bioconductor 作为源然后调用 biocLite 时,它​​几乎总是对我有用。示例:

                    source("https://bioconductor.org/biocLite.R")
                    biocLite("preprocessCore")
                    

                    【讨论】:

                    • 这仅适用于生物导体包,这也是必须安装生物导体包的方式。
                    • @JorisMeys 在我看来,到目前为止我尝试安装的所有软件包都可以通过这种方法获得,但我主要将 R 用于生物信息学。
                    • @JorisMeys 我不知道如何,但biocLite 能够透明地在 cran 上获取这些包并安装它们。我刚刚测试了dplyr(在 Xubuntu 16.04 上,如果重要的话)。希望尽可能避免混乱,我现在尝试“以相同的方式”安装所有软件包(目前使用biocLite)。
                    • @bli 你是对的,我的立场是正确的。 biocLite 中的代码识别包的正确存储库,然后调用 install.packages() 进行实际安装。但它不起作用,因为您使用了biocLite。它之所以有效,是因为install.packages() 做了它应该做的事情。使用biocLite()install.packages() 之间没有区别,除了开销和biocLite() 默认情况下还会更新它认为必要的所有其他包。所以我仍然建议将install.packages() 用于非生物导体包装。
                    • @bli 它不保证兼容性,它会将所有内容更新到最新版本(除非您输入suppressUpdates = TRUE)。这与调用update.packages() 然后install.packages() 相同。因为这就是 biocLite 在幕后所做的。
                    【解决方案17】:

                    另一个小补充,在尝试使用 docker 镜像 rocker/r-ver:3.1.0 测试旧 R 版本时

                    1. 默认repos 设置为MRAN,这样获取很多包失败。
                    2. 那个版本的R没有https,所以,例如: install.packages("knitr", repos = "https://cran.rstudio.com") 似乎有效。

                    【讨论】:

                      【解决方案18】:

                      here(法语)所述,当您的计算机上安装了两个版本的 R 时,可能会发生这种情况。卸载最旧的,然后再次尝试安装包!对我来说效果很好。

                      【讨论】:

                        猜你喜欢
                        相关资源
                        最近更新 更多