ням должен выдавать ошибку, когда пакет недоступен

14

Недавно я столкнулся с ошибкой в ​​скрипте, когда я попытался сделать следующее:

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 должен быть по умолчанию), чтобы сделать мои сценарии более надежными?

PMR
источник
Создайте свой скрипт еще раз, перед тем, как продолжить, проверьте возвращаемое значение yum.
Фрлан
1
@frlan Вот в чем проблема. yumсчастливо возвращается 0в этом случае. Мой сценарий уже проверяет возвращаемое значение, прежде чем продолжить. Заметьте &&?
ПМР

Ответы:

11

Как вы обнаружили, это поведение изменилось между 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
mvermaes
источник
3
Хорошо, это помогает и подтверждает, что я не сумасшедший думать, что это должно быть по умолчанию.
PMR
2
Хорошо помогает, текущее поведение yum весьма недружелюбно для использования скрипта.
Карата
14

Согласно ошибке 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
Бойкот SE для Моники Челлио
источник