yum powinien błąd, gdy pakiet nie jest dostępny

14

Niedawno napotkałem błąd w skrypcie, w którym próbowałem wykonać następujące czynności:

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

Skrypt działał dobrze na nowszym CentOS, ale kiedy próbowałem go uruchomić na Cent OS 5, some_package.x86_64nie był dostępny. Ale zamiast błędu i zatrzymania yumwłaśnie wydrukowałem wiadomość:

No package some_package.x86_64 available.

Jak mogę wymusić yumbłąd w takich sytuacjach (który IMO powinien być domyślny), aby moje skrypty były bardziej niezawodne?

pmr
źródło
Zbuduj swój skrypt i ponownie sprawdź wartość mniszka przed kontynuowaniem.
frlan
1
@frlan To jest problem. yumszczęśliwie powraca 0w tym przypadku. Mój skrypt już sprawdza wartość zwracaną przed kontynuowaniem. Zauważ &&?
pmr

Odpowiedzi:

11

Jak już zauważyłeś, zachowanie to zmieniło się między RHEL 5 i 6 (zobacz https://bugzilla.redhat.com/show_bug.cgi?id=736694, aby uzyskać dyskusję). Z tego linku sprawdzenie kodu powrotu yum info <pkg>powinno pozwolić na przerwanie skryptu zgodnie z wymaganiami. Coś jak:

# 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
źródło
3
OK, to pomaga i potwierdza, że ​​nie jestem szalony na myśl, że to powinna być domyślna.
pmr
2
pomaga dobrze, obecne zachowanie yum jest dość nieprzyjazne dla użycia skryptu.
Karata
14

W Bug 1274211 zostało to naprawione w wersji yum-3.4.3-133.el7. Musisz jednak włączyć tryb ścisły.

Najłatwiejszym sposobem na zrobienie tego do celów skryptowych jest użycie przełącznika wiersza poleceń:

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

Możesz jednak ustawić go jako opcję konfiguracji w yum.conf:

[main]
skip_missing_names_on_install=0
Bojkot SE dla Moniki Cellio
źródło