Установка cpanm в скрипте bash
Я пишу скрипт, который устанавливает и настраивает Nagios в соответствии с моими требованиями. Требуется cpanm и несколько модулей perl.
Здесь используется функция step/try/next: /questions/43586656/effektivnaya-proverka-sostoyaniya-vyihoda-bash-dlya-neskolkih-komand/43586664#43586664
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 далее
Что работает, и я, вероятно, постараюсь вернуть его позже, но пока это работает. Так может и остаться.
Однако сделать то же самое для try cpanm Nagios::Config не получится. Файл выглядит так:
#!/bin/bash
cpanm Nagios::Config
... и если я запущу это, позвонив sh conf_nagcpanm.sh
это работает отлично.
1 ответ
Я думаю, используя backticks
try `cpanm Nagios::Config`
это ошибка bash
примет выражение в обратных галочках, выполнит его и заменит выходные данные команды на выражение. Выход из cpanm
не будет командами оболочки, так что это не будет работать. Должно быть просто
try cpanm Nagios::Config