yum має помилитися, коли пакет недоступний


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 має бути за замовчуванням), щоб зробити мої сценарії більш надійними?


Створіть свій сценарій ще більше ребусту і перевірте, чи не повертається значення yum, перш ніж продовжувати.
фрлан

1
@frlan Це питання. yumщасливо повертається 0в цьому випадку. Мій сценарій вже перевіряє повернене значення, перш ніж продовжувати. Помічаєте &&?
pmr

Відповіді:


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

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.