截至r 2.15.2,包装存储库的子目录结构是否更改



有点尴尬/不做,但是由于我已经从"纯净的用户"搬到了"初学者",所以我从来没有实际上,当新的R版本发布时,请阅读ChangElog - 直到今天(我感觉我应该将其变成habbit); - )

但是,我不确定假定的更改是否真的发生了

实际问题

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

更改

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

to

./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()将检查是否在同一存储库上可用源软件包,并报告是否是较晚版本或有源软件包,但没有二进制软件包可用的。

刚刚再次查看了正式文档,并想到了ARG type可能未正确传递给contrib.url(),因为在我看来install.package()正在查看type="source"软件包的位置?

这个特定的错误与我的错误不同。

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

进行比较

对于Windows或Mac OS X二进制软件包安装,install.packages()将检查是否在同一存储库上可用源软件包,并报告是否是较晚版本或有源软件包,但没有二进制软件包可用。

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

当然,您在2.15.1中未收到此消息的原因是,它不执行2.15.2执行的检查(请参阅上面的R新闻)。

我已经提交了有关我的问题的错误报告。还没有新闻。也可以将其发布到r邮件列表中。

相关内容

最新更新