从本地仓库安装具有依赖项的包时出错
Error When Installing Packages with Dependencies from Local Repo
当它们有依赖项时,我在离线安装包时出错。这与 this question 非常相似。我已按照那里的说明进行离线安装。
所以我已经将所有 CRAN 包安装到一个目录并创建了 PACKAGES
文件。
但该答案中概述的过程似乎存在一个微妙的错误
我可以使用以下命令从 Linux 上的本地存储库安装软件包,没有问题,即不指定存储库:
install.packages("/software/r_packages/src/contrib/ZillowR_0.1.0.tar.gz", lib="/usr/lib64/R/library")
但是,如果我想获取依赖项,我需要使用
将其指向存储库及其 PACKAGES
文件
install.packages("/software/r_packages/src/contrib/ZillowR_0.1.0.tar.gz", lib="/usr/lib64/R/library", repos="file:///software/r_packages/")
但是如果我这样做,我会收到错误消息:
Warning message:
package ‘/software/r_packages/src/contrib/ZillowR_0.1.0.tar.gz’ is not available (for R version 3.2.3)
我已经测试并确认它正在读取 PACKAGES
文件,因为如果我在 PACKAGES
中的 ZillowR 条目中输入错字,我会收到一条错误消息,表明它无法解析该条目正确。
以下内容对您有用:
install.packages(pkgs = "ZillowR", type = "source",
lib = "/usr/lib64/R/library",
contriburl = "file:///software/r_packages/")
install.packages()
的论据可能相当多,所有默认设置都配置为与从 CRAN(或其他远程存储库)安装的包一起使用。要解压缩这里发生的事情,请考虑使用以下代码从 CRAN 安装 ZillowR:
install.packages(pkgs = "ZillowR")
这是设置了很多默认值,所以你实际上是在调用:
install.packages(pkgs = "ZillowR", lib = .libPaths()[1],
repos = getOption("repos"),
contriburl = contrib.url(repos, type),
type = getOption("pkgType"))
两个关键默认值调用一些全局选项,在我的安装中设置为:
> getOption("repos")
CRAN CRANextra
"https://cloud.r-project.org" "http://www.stats.ox.ac.uk/pub/RWin"
> getOption("pkgType")
[1] "both"
您需要(可能)克服这些默认值才能进行本地安装,要克服的关键是 contriburl
的值(继承自 repos
。知道这一点,您的直觉似乎(正确地)遵循了 installing a local source package 的说明,例如:
install.packages(pkgs = "/software/r_packages/src/contrib/ZillowR_0.1.0.tar.gz", repos = NULL, type = "source")
但是 install.packages()
的行为在那里完全不同,因为 pkgs
参数期望源 tarball 的 filename(当 repos
因此 contriburl
是 NULL
).
对于类似本地 CRAN 的回购,您实际上想要将 pkgs
设置为 包名称 并将 contriburl
设置为本地回购路径.作为参考,这里的 the relevant section of the docs for contriburl
:
contriburl
URL(s) of the contrib sections of the repositories. Use this argument if your repository mirror is incomplete, e.g., because you burned only the ‘contrib’ section on a CD, or only have binary packages. Overrides argument repos. Incompatible with type = "both".
最后一句说明了您(可能)需要设置 type = "source"
的原因。
当它们有依赖项时,我在离线安装包时出错。这与 this question 非常相似。我已按照那里的说明进行离线安装。
所以我已经将所有 CRAN 包安装到一个目录并创建了 PACKAGES
文件。
但该答案中概述的过程似乎存在一个微妙的错误
我可以使用以下命令从 Linux 上的本地存储库安装软件包,没有问题,即不指定存储库:
install.packages("/software/r_packages/src/contrib/ZillowR_0.1.0.tar.gz", lib="/usr/lib64/R/library")
但是,如果我想获取依赖项,我需要使用
将其指向存储库及其PACKAGES
文件
install.packages("/software/r_packages/src/contrib/ZillowR_0.1.0.tar.gz", lib="/usr/lib64/R/library", repos="file:///software/r_packages/")
但是如果我这样做,我会收到错误消息:
Warning message:
package ‘/software/r_packages/src/contrib/ZillowR_0.1.0.tar.gz’ is not available (for R version 3.2.3)
我已经测试并确认它正在读取 PACKAGES
文件,因为如果我在 PACKAGES
中的 ZillowR 条目中输入错字,我会收到一条错误消息,表明它无法解析该条目正确。
以下内容对您有用:
install.packages(pkgs = "ZillowR", type = "source",
lib = "/usr/lib64/R/library",
contriburl = "file:///software/r_packages/")
install.packages()
的论据可能相当多,所有默认设置都配置为与从 CRAN(或其他远程存储库)安装的包一起使用。要解压缩这里发生的事情,请考虑使用以下代码从 CRAN 安装 ZillowR:
install.packages(pkgs = "ZillowR")
这是设置了很多默认值,所以你实际上是在调用:
install.packages(pkgs = "ZillowR", lib = .libPaths()[1],
repos = getOption("repos"),
contriburl = contrib.url(repos, type),
type = getOption("pkgType"))
两个关键默认值调用一些全局选项,在我的安装中设置为:
> getOption("repos")
CRAN CRANextra
"https://cloud.r-project.org" "http://www.stats.ox.ac.uk/pub/RWin"
> getOption("pkgType")
[1] "both"
您需要(可能)克服这些默认值才能进行本地安装,要克服的关键是 contriburl
的值(继承自 repos
。知道这一点,您的直觉似乎(正确地)遵循了 installing a local source package 的说明,例如:
install.packages(pkgs = "/software/r_packages/src/contrib/ZillowR_0.1.0.tar.gz", repos = NULL, type = "source")
但是 install.packages()
的行为在那里完全不同,因为 pkgs
参数期望源 tarball 的 filename(当 repos
因此 contriburl
是 NULL
).
对于类似本地 CRAN 的回购,您实际上想要将 pkgs
设置为 包名称 并将 contriburl
设置为本地回购路径.作为参考,这里的 the relevant section of the docs for contriburl
:
contriburl
URL(s) of the contrib sections of the repositories. Use this argument if your repository mirror is incomplete, e.g., because you burned only the ‘contrib’ section on a CD, or only have binary packages. Overrides argument repos. Incompatible with type = "both".
最后一句说明了您(可能)需要设置 type = "source"
的原因。