yum sollte einen Fehler machen, wenn ein Paket nicht verfügbar ist

14

Ich bin kürzlich auf einen Fehler in einem Skript gestoßen, bei dem ich Folgendes versucht habe:

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

Das Skript lief gut auf einem neueren CentOS, aber als ich versuchte, es auf Cent OS 5 auszuführen, some_package.x86_64war es nicht verfügbar. Aber anstatt Fehler zu machen und anzuhalten, wurde yumnur die Nachricht gedruckt:

No package some_package.x86_64 available.

Wie kann ich yumin solchen Situationen Fehler erzwingen (welche IMO sollte die Standardeinstellung sein), um meine Skripte robuster zu machen?

pmr
quelle
Erstellen Sie Ihr Skript rebust und überprüfen Sie den Rückgabewert von yum, bevor Sie fortfahren.
Frlan
1
@frlan Das ist das Problem. yumkehrt 0in diesem Fall gerne zurück . Mein Skript überprüft bereits den Rückgabewert, bevor es fortfährt. Beachten Sie die &&?
15.

Antworten:

11

Wie Sie festgestellt haben, hat sich dieses Verhalten zwischen RHEL 5 und 6 geändert (weitere Informationen finden Sie unter https://bugzilla.redhat.com/show_bug.cgi?id=736694 ). Wenn Sie über diesen Link den Rückkehrcode von überprüfen yum info <pkg>, können Sie Ihr Skript nach Bedarf abbrechen. Etwas wie:

# 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
quelle
3
OK, das hilft und bestätigt, dass ich nicht verrückt bin zu denken, dass dies die Standardeinstellung sein sollte.
PMR
2
hilft auch, das aktuelle yum-verhalten ist für die skriptnutzung recht unfreundlich.
Karata
12

Per Bug 1274211 wurde dies in yum-3.4.3-133.el7 behoben. Sie müssen jedoch den strengen Modus aktivieren.

Der einfachste Weg, dies für Skriptzwecke zu tun, ist die Befehlszeilenoption:

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

Sie können es jedoch auch als Konfigurationsoption festlegen in yum.conf:

[main]
skip_missing_names_on_install=0
Boykott SE für Monica Cellio
quelle