web-dev-qa-db-ja.com

CPANおよびPerlモジュールのサイレントおよびスクリプトインストール?

Scientific Linux(RHEL)インストールスクリプトにCPANといくつかのPerlモジュールを自動的にインストールする必要があります。残念ながら、私が見た限りでは、私が欲しい特定のモジュール(少なくとも1つ)はRPM:として見つけることができません。

したがって、CPANをインストールし、それを自動的に(または構成ファイルを使用して)構成してから、必要なモジュール(依存関係を含む)も自動的にインストールする必要があります。

これは非常に珍しい要件のようには思えませんが、これに関する本当に優れたドキュメントは見たことがありません。問題は、CPANが初めて起動されるたびに、インタラクティブな構成が実行されることです。これは何とかスキップできますか?また、モジュールインストールをコマンドラインから直接起動するにはどうすればよいですか?

9

これについては cpanm を参照することをお勧めします。軽量でシェルスクリプト対応であり、従来のCPANよりもはるかにシンプルです。

5
Jeff Albert

CPANを実行する前に、この環境変数を設定してみてください。

export Perl_MM_USE_DEFAULT=1

CPANが「できる限り自動的に設定しますか?[yes]」と尋ねると、Perlが自動的に「yes」と答えます。

ソース

23

「そして、コマンドラインから直接モジュールのインストールを起動するにはどうすればよいですか?」

これは行う必要があります:

Perl -MCPAN -e 'install Your::Package'
6

繰り返しの多い作業の場合は、cpan2rpmで数時間を費やしてRPMに変換するのにお金がかかるかもしれません。私の経験では、CPANの実行(インタラクティブであっても)は、予期しないイベント(バージョンの癖、ネットワークの問題、偽のテストの失敗)に悩まされているため、(半)自動インストールでは信頼できません。

5
Alien Life Form

これは魔法をかけるはずです:

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
3
Magochi