Scientific Linux(RHEL)インストールスクリプトにCPANといくつかのPerlモジュールを自動的にインストールする必要があります。残念ながら、私が見た限りでは、私が欲しい特定のモジュール(少なくとも1つ)はRPM:として見つけることができません。
したがって、CPANをインストールし、それを自動的に(または構成ファイルを使用して)構成してから、必要なモジュール(依存関係を含む)も自動的にインストールする必要があります。
これは非常に珍しい要件のようには思えませんが、これに関する本当に優れたドキュメントは見たことがありません。問題は、CPANが初めて起動されるたびに、インタラクティブな構成が実行されることです。これは何とかスキップできますか?また、モジュールインストールをコマンドラインから直接起動するにはどうすればよいですか?
これについては cpanm を参照することをお勧めします。軽量でシェルスクリプト対応であり、従来のCPANよりもはるかにシンプルです。
CPANを実行する前に、この環境変数を設定してみてください。
export Perl_MM_USE_DEFAULT=1
CPANが「できる限り自動的に設定しますか?[yes]」と尋ねると、Perlが自動的に「yes」と答えます。
「そして、コマンドラインから直接モジュールのインストールを起動するにはどうすればよいですか?」
これは行う必要があります:
Perl -MCPAN -e 'install Your::Package'
繰り返しの多い作業の場合は、cpan2rpmで数時間を費やしてRPMに変換するのにお金がかかるかもしれません。私の経験では、CPANの実行(インタラクティブであっても)は、予期しないイベント(バージョンの癖、ネットワークの問題、偽のテストの失敗)に悩まされているため、(半)自動インストールでは信頼できません。
これは魔法をかけるはずです:
get_cpanm(){
if [ \! -f /usr/local/bin/cpanm ]; then
cd $TMP_DIR && curl --insecure -L http://cpanmin.us | Perl - App::cpanminus
if [ \! -f /usr/local/bin/cpanm ]; then
echo "Downloading from cpanmin.us failed, downloading from xrl.us"
curl -LO http://xrl.us/cpanm &&
chmod +x cpanm &&
mv cpanm /usr/local/bin/cpanm
fi
fi
CPANM=$(which cpanm);
if [ \! -f "$CPANM" ]; then
echo "ERROR: Unable to find cpanm"
return 1;
fi
return 0
}
cpanm Time::HiRes CGI Moose Config::JSON other::cpanmodules