Недавно я столкнулся с ошибкой в скрипте, когда пытался сделать следующее:
yum -y install another_package.x86_64 some_package.x86_64 && run_my_script
Скрипт хорошо работал на более новой CentOS, но когда я попытался запустить его на Cent OS 5, some_package.x86_64
не было в наличии. Но вместо того, чтобы ошибаться и останавливаться yum
просто распечатал сообщение:
No package some_package.x86_64 available.
Как я могу заставить yum
к ошибке в таких ситуациях (какой IMO должен быть по умолчанию), чтобы мои сценарии были более надежными?
За Ошибка 1274211, это было исправлено в yum-3.4.3-133.el7. Однако вам необходимо включить строгий режим.
Самый простой способ сделать это для сценариев - использовать переключатель командной строки:
yum -y --setopt=skip_missing_names_on_install=False install another_package.x86_64 some_package.x86_64 && run_my_script
Однако вы также можете установить его как параметр конфигурации в своем yum.conf
:
[main]
skip_missing_names_on_install=0
Как вы обнаружили, это поведение изменилось между RHEL 5 и 6 (см. https://bugzilla.redhat.com/show_bug.cgi?id=736694 для обсуждения). По этой ссылке, проверяя код возврата yum info <pkg>
должен позволить вам прервать ваш скрипт по мере необходимости. Что-то вроде:
# Set a variable containing the packages to install:
pkgs_to_install='another_package.x86_64 some_package.x86_64'
# Loop over the packages in the list:
for pkg in ${pkgs_to_install}; do
# Stop executing if at least one package isn't available:
yum info ${pkg} >> /dev/null 2>&1 || exit
done
# Continue running your original script:
yum -y install ${pkgs_to_install} && run_my_script