インターネットに接続していない(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
しかし、依存関係を含むローカルファイルからソースパッケージをインストールする例が見つかりません。
ジョシュアウルリッヒが質問に対するコメントで正しい答えを出しました。
キーは、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リポジトリミラー。
上記の回答を参照すると、Windowsにインストールされている場合、write_PACKAGES()は2つのファイルを生成します。PACKAGESとPACKAGES.gzは、すべてのZipファイルが配置される「/ path/to/packages /」ディレクトリの下にあります。ファイルPACKAGES.gzは、install.packages()関数が単独のPACKAGESファイルを正しく読み込める前に削除する必要があります。そうしないと、「圧縮ファイルを開けません」エラーが表示されます。
オフラインインストールでも同じ問題が発生しました。どういうわけか、コマンドラインでは機能しませんでした。
ダウンロードして、すべての依存関係を抽出し(必要な最小バージョンのチェックを維持)、ライブラリフォルダーにフォルダーを貼り付けました。このようにして、私の問題だけが解決されました。