web-dev-qa-db-ja.com

Rパッケージと依存関係のオフラインインストール

インターネットに接続していない(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.packagesおよびcontrib.urlしかし、依存関係を含むローカルファイルからソースパッケージをインストールする例が見つかりません。

57
Jeroen

ジョシュアウルリッヒが質問に対するコメントで正しい答えを出しました。

キーは、reposまたはcontriburlのいずれかに引数の前にfile://を付けます。 Unixyシステムでは次のことができます。

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

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

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

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

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

46
Jeroen

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

4
user3282777

オフラインインストールでも同じ問題が発生しました。どういうわけか、コマンドラインでは機能しませんでした。

ダウンロードして、すべての依存関係を抽出し(必要な最小バージョンのチェックを維持)、ライブラリフォルダーにフォルダーを貼り付けました。このようにして、私の問題だけが解決されました。

0
Shekhar Sahu