1

要件に合わせて 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

ここで私の問題は次のとおりです。

  1. どちらの方法で cpanminus のインストールを実行しようとしても、スクリプトが失敗し、正しくインストールされません。step/try/next関数の外で機能させることはできないようです(私が望んでいるわけではありません)。

  2. 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て実行すると、正常に動作します。

4

1 に答える 1

1

バックティックを使用すると思います

try `cpanm Nagios::Config`

は間違いです。bashバッククォートで式を取得して実行し、コマンドの出力を式に置き換えます。の出力はcpanmシェル コマンドではないため、これは機能しません。それは単にあるべきです

try cpanm Nagios::Config
于 2015-07-09T00:52:43.820 に答える