1

有点尴尬/不行,但是由于我从“纯用户”转变为“初学者-开发人员”的时间不长,所以当新的 R 版本问世时,我从未真正阅读过 CHANGELOG - 直到今天(我觉得我应该养成这个习惯);-)

然而,我不确定假设的更改是否真的发生了,因为我在第一次看到RR 2.15.2的CHANGELOG时找不到任何关于它的信息:

实际问题

包存储库的(子目录)结构是否可能从

./bin/windows/contrib/2.xx/

./src/contrib/2.xx/甚至./src/contrib

或者至少该PACKAGES文件现在需要保存在这里:./src/contrib/PACKAGES

背景资料

直到版本 2.15.1,以下路径可以从我的本地包存储库安装包:

path.repos  <- "L:/R/packages"
repos       <- file.path("file://", path.repos)

函数contrib.url会将repos其扩展至正确的子目录:

> contrib.url(repos)
[1] "file:///L:/R/packages/bin/windows/contrib/2.15"

但是当我尝试运行时install.packages(),我收到 R 2.15.2 的以下错误:

> install.packages("mypkg", 
+     lib=file.path(R.home(), "library"),
+     repos=repos,
+     type="win.binary"
+ )
Error in read.dcf(file = tmpf) : cannot open the connection
In addition: Warning message:
In read.dcf(file = tmpf) :
  cannot open compressed file 'L:/R/packages/src/contrib/PACKAGES', probable reason 'No such file or directory'
> 

当我对 R 2.15.1 做同样的事情时,一切都很顺利。

尽职调查

CHANGELOG中有一些关于存储库的参考,但我发现的唯一部分给了我一些证据表明发生了假设的变化是这样的:

包安装

对于 Windows 或 Mac OS X 二进制包安装, install.packages() 将检查源包是否在相同的存储库中可用,并报告它是否是更高版本或有源包但没有可用的二进制包。

刚刚再次查看了官方文档,并得到了可能 argtype没有正确传递的想法,contrib.url()因为在我看来,我install.package()正在寻找type="source"包裹的地方?

4

1 回答 1

2

这个特殊的错误与的不同。

此问题与install.packages()安装前现在运行的检查有关。正如 Rappster 所说,它试图找到一个源包来比较二进制版本

对于 Windows 或 Mac OS X 二进制包安装, install.packages() 将检查源包是否在相同的存储库中可用,并报告它是否是更高版本或有源包但没有可用的二进制包。

因此,压缩此消息的一种简单方法是创建R/src/contrib目录并在该目录中运行tools::write_PACKAGES()以创建(空)PACKAGES文件。

当然,您在 2.15.1 中没有收到此消息的原因是它没有执行 2.15.2 执行的检查(请参阅上面的 R NEWS 引用)。

我已经提交了我的问题的错误报告。还没有消息。也可以将其发布到 R 邮件列表。

于 2012-10-31T21:06:49.937 回答