Назад | Перейти на главную страницу

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

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

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