60

インターネットに接続されていない (Linux) マシンに多数のパッケージをインストールする必要があるとします。クランのコピーをダウンロードして、オフラインの場所に持ってきた DVD に焼き付けたとします。

wget ftp://cran.r-project.org/pub/R/src/contrib/*.tar.gz

すべてのソース パッケージとその依存関係の概要を含む PACKAGES ファイルを追加することもできます。

library(tools)
write_PACKAGES()

これをオフラインで使用して、依存関係が解決され、ローカル ファイルからもインストールされるようにソース パッケージをインストールするにはどうすればよいですか? たとえば、かなり深い依存構造を持つパッケージ ggplot2 をインストールしたいとします。ggplot2 のソース パッケージとそのすべての依存関係が、現在の作業ディレクトリでソース パッケージとして利用できるとします。私が行った場合:

install.packages("ggplot2_0.9.1.tar.gz", repos=NULL)

依存関係がまったく解決されないため、これはエラーになります。または:

install.packages(list.files(pattern="*.tar.gz"), repos=NULL)

ただし、これも依存構造を無視し、パッケージをアルファベット順にインストールしようとしますが、これも失敗します。

調べてみましたavailable.packagescontrib.url、依存関係を含むローカルファイルからソースパッケージをインストールする例が見つかりません。

4

3 に答える 3

46

正解は、質問に対するコメントで Joshua Ulrich によって与えられました。

reposキーは、引数の前にまたはcontriburlを付けることfile://です。したがって、Unix システムでは次のことができます。

install.packages("ggplot2", contriburl="file:///path/to/packages/")

これは、必要なすべてのソース パッケージと PACKAGES インデックス ファイルが で利用可能であることを前提としています/path/to/packages。PACKAGES ファイルが存在しない場合は、最初に以下を使用して生成する必要があります。

library(tools)
write_PACKAGES("/path/to/packages/")

これにより、このディレクトリにあるすべてのソース パッケージのインデックスが生成されます。file:この例では、プレフィックスの後ろに 3 つのスラッシュがあることに注意してください。3 番目のスラッシュは、ファイル システムのルートからの相対パスを示します。

引数とreposの違いは、指定されたパスに別のパスを追加することです。これは通常、ソース パッケージが公式の CRAN リポジトリ ミラー上にある場所であるためです。contriburlrepos/src/contrib

于 2012-05-31T21:35:54.883 に答える
4

上記の回答を参照すると、インストールが Windows にある場合、write_PACKAGES() は、すべての zip ファイルが配置される「/path/to/packages/」ディレクトリの下に PACKAGES と PACKAGES.gz の 2 つのファイルを生成します。install.packages() 関数が単独の PACKAGES ファイルを正しく読み取ることができるようになる前に、ファイル PACKAGES.gz を削除する必要があります。そうしないと、「圧縮ファイルを開けません」というエラーが表示されます。

于 2014-07-06T09:38:23.220 に答える