最初のRパッケージを開発しています(R 2.13、Ubuntu 10.10を使用)。それをfooと呼び、R /ディレクトリ内のコードがlibrary(bar)行で始まるとしましょう、ここでbarはCRANの既存のパッケージであり、その上でfoo 依存します。 DESCRIPTIONファイルには次の行が含まれています。
Depends: bar
パッケージfooをテストする準備ができたら、次を使用してローカルにインストールします。
R CMD INSTALL foo_1.0.tar.gz
ただし、barがインストールされていない場合、次のように表示されます。
ERROR: dependency ‘bar’ is not available for package ‘foo’
明らかに、myfooがinstall.packages()を使用してCRANからインストールされた場合、barは同時にインストールされます。だから私の質問は:必要に応じて、パッケージをインストールするときに、CRANパッケージbarがインストールされていることを確認する方法fooR CMD INSTALLを使用しますか?これは構成スクリプトの仕事ですか?
実際、R拡張機能ガイドを読み直しても、R CMD INSTALLがCRANから依存関係を取得するとは言えません。 R内のinstall.packages()メソッドはそれを行いますが、一見したところ、R CMD INSTALLはそうではないと思います。
Install.packagesを使用して.tar.gzからインストールできますが、repos = NULLを設定する必要があり、これが適用されます。
dependencies: logical indicating to also install uninstalled packages
on which these packages depend/suggest/import (and so on
recursively). Not used if repos = NULL.
私がすべきことは、DESCRIPTIONファイルから依存関係を取得し、クリーンな環境でビルドをテストするときにRを実行し、それらに対してinstall.packages()を実行することだと思います。
幸いにも Devtools は簡単な解決策を提供します:install_deps()
install_deps(pkg = "。"、依存関係=論理、スレッド= getOption( "Ncpus"、1))
引数:
pkg:パッケージの説明。パスまたはパッケージ名を指定できます。詳細については、「as.package」を参照してください依存関係:「論理」は、この「パッケージ」が依存/アンインストール/提案するアンインストールパッケージもインストールすることを示します。 「install.packages」の引数「dependencies」を参照してください。
threads:依存関係のインストールに使用する同時スレッドの数。デフォルトでは、オプション「Ncpus」または設定されていない場合は「1」になります。
例:
install_deps( "。") install_deps( "/ path/to/package"、dependencies = "logical")
最終的にはbash here-documentを使用し、クラウドミラーを指定して依存関係を見つけました。
Sudo R --Vanilla <<EOF
install.packages('forecast', repos='http://cran.us.r-project.org')
q()
EOF
rパッケージは「予報」で、使用したクラウドミラーは http://cran.us.r-project.org でした。別のミラーを使用したい場合、ここにすべてあります: https://cran.r-project.org/mirrors.html
RパッケージをAWS EMR bootstrap= Shell script。
@Jonathan Leに似ていますが、スクリプトの使用に適しています:
Sudo R --Vanilla -e 'install.packages("forecast", repos="http://cran.us.r-project.org")'
これを行うメカニズムは、depends
ファイルのDESCRIPTION
フィールドにエントリを追加することです。
Depends: bar
これは、既にインストールされている場合はbar
ライブラリーをロードし、そうでない場合はCRANからインストールします。
これは、Writing R extensions
マニュアルのセクション1.1.1で説明されています。 http://cran.r-project.org/doc/manuals/R-exts.html#The-DESCRIPTION-file =