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


9

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

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

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

回答:


5

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


1
圧倒的に正しい答え。cpanmを使用します。perlbrewを使用perlbrew install-cpanmしている場合は、使用すれば完了です。
クレイグリンガー

で、新しい質問と回答投稿serverfault.com/q/815649/102814を私はこれがどのように比較的発見でき悩まさてるので、そのperlbrewはどこにも来ませんでした。
クレイグリンガー

23

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

export PERL_MM_USE_DEFAULT=1

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

ソース


この答えは、受け入れられた答えよりもはるかに優れています。
kapad

6

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

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

perl -MCPAN -e 'install Your::Package'

5

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


3

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

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.