要件に合わせて Nagios をインストールおよび構成するスクリプトを作成しています。cpanm といくつかの perl モジュールが必要です。
ここから step/try/next 関数を使用しています: https://stackoverflow.com/a/5196220
step "Downloading cpanm installer"
try `wget -q http://cpanmin.us -O $swrepo/cpanm.install`
next
step "Installing cpanm"
try echo '{ exec </dev/tty; cat $swrepo/cpanm.install | perl - App::cpanminus; }' | bash
# try bash -c "$(cat $swrepo/cpanm.install | perl - App::cpanminus)"
# try cat $swrepo/cpanm.install | perl - App::cpanminus
next
step "Installing Perl module Nagios Config"
try `cpanm Nagios::Config`
next
ここで私の問題は次のとおりです。
どちらの方法で cpanminus のインストールを実行しようとしても、スクリプトが失敗し、正しくインストールされません。step/try/next関数の外で機能させることはできないようです(私が望んでいるわけではありません)。
cpanm コマンドも失敗します。スクリプトのこの部分だけを分離して実行すると、「cpanm コマンドが見つかりません」というエラーが発生します。コマンドラインで手動で実行できます。
少しイライラしている人への指針はありますか?
アップデート
cpanm のセットアップを別のファイルに取り出しました: step "Installing cpanm" try sh conf_cpanm.sh next
これは機能し、おそらく後日それを元に戻そうとしますが、これまでのところ機能しています。だからとどまることができます。
ただし、try cpanm Nagios::Config に対して同じことを行っても機能しません。ファイルは次のようになります。
#!/bin/bash
cpanm Nagios::Config
...そして、それを呼び出しsh conf_nagcpanm.sh
て実行すると、正常に動作します。