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.urlreposそれを受け取り、適切なサブディレクトリに展開します。

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

しかし、実行しようとするとinstall.packages()、R2.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またはMacOSXのバイナリパッケージをインストールする場合、install.packages()は、ソースパッケージが同じリポジトリで利用可能かどうかを確認し、それが新しいバージョンであるか、ソースパッケージはあるが、利用可能なバイナリパッケージがないかを報告します。

公式ドキュメントをもう一度見て、パッケージの場所を探しているように見えるので、argが正しくtype渡されない可能性があるという考えを得ましたか?contrib.url()install.package()type="source"

4

1 に答える 1

2

この特定のバグは私のものと同じではありません。

install.packages()この問題は、インストール前に実行されるチェックに関連しています。Rappsterが言ったように、バイナリバージョンを比較するためのソースパッケージを見つけようとします

WindowsまたはMacOSXのバイナリパッケージをインストールする場合、install.packages()は、ソースパッケージが同じリポジトリで利用可能かどうかを確認し、それが新しいバージョンであるか、ソースパッケージはあるが、利用可能なバイナリパッケージがないかを報告します。

したがって、このメッセージをつぶす簡単な方法は、ディレクトリを作成し、そのR/src/contribディレクトリで実行tools::write_PACKAGES()して(空の)PACKAGESファイルを作成することです。

そしてもちろん、2.15.1でこのメッセージが表示されない理由は、2.15.2が実行するチェック(上記のR NEWSの引用を参照)を実行しないためです。

問題のバグレポートを提出しました。まだニュースはありません。Rメーリングリストにも投稿できます。

于 2012-10-31T21:06:49.937 に答える