yum harus error ketika paket tidak tersedia

14

Baru-baru ini saya menemukan bug di skrip tempat saya mencoba melakukan hal berikut:

yum -y install another_package.x86_64 some_package.x86_64 && run_my_script

Script berjalan dengan baik pada CentOS yang lebih baru, tetapi ketika saya mencoba menjalankannya pada Cent OS 5, some_package.x86_64tidak tersedia. Namun alih-alih kesalahan dan berhenti yumhanya mencetak pesan:

No package some_package.x86_64 available.

Bagaimana saya bisa memaksa yumkesalahan dalam situasi seperti itu (IMO mana yang harus menjadi default) untuk membuat skrip saya lebih kuat?

sore
sumber
Buat skrip Anda lebih kuat dan periksa kembali nilai yum sebelum melanjutkan.
frlan
1
@ Frlan Itulah masalahnya. yumdengan senang hati kembali 0dalam kasus ini. Script saya sudah memeriksa nilai kembali sebelum melanjutkan. Perhatikan &&?
sore

Jawaban:

11

Seperti yang Anda temukan, perilaku ini berubah antara RHEL 5 dan 6 (lihat https://bugzilla.redhat.com/show_bug.cgi?id=736694 untuk beberapa diskusi). Dari tautan itu, memeriksa kode pengembalian yum info <pkg>harus memungkinkan Anda untuk membatalkan skrip sesuai kebutuhan. Sesuatu seperti:

# 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
sumber
3
OK, itu membantu dan menegaskan bahwa saya tidak gila untuk berpikir bahwa ini harus menjadi default.
sore
2
membantu dengan baik, perilaku yum saat ini cukup tidak ramah untuk penggunaan skrip.
Karata
13

Per Bug 1274211 , ini telah diperbaiki di yum-3.4.3-133.el7. Namun, Anda perlu mengaktifkan mode ketat.

Cara termudah untuk melakukan ini untuk keperluan skrip adalah melalui saklar baris perintah:

yum -y --setopt=skip_missing_names_on_install=False install another_package.x86_64 some_package.x86_64 && run_my_script

Namun, Anda juga dapat mengaturnya sebagai opsi konfigurasi di yum.conf:

[main]
skip_missing_names_on_install=0
Boikot SE untuk Monica Cellio
sumber