我正在编写一个脚本,根据我的要求安装和配置 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 设置拉到一个单独的文件中:步骤“安装 cpanm”尝试 sh conf_cpanm.sh next
哪个有效,我可能会在以后尝试将其拉回,但到目前为止,它的功能。所以它可以留下来。
但是,对 try cpanm Nagios::Config 执行相同操作将不起作用。该文件如下所示:
#!/bin/bash
cpanm Nagios::Config
...如果我通过调用sh conf_nagcpanm.sh
它来运行它就可以了。