yum devrait faire une erreur quand un paquet n'est pas disponible

14

J'ai récemment rencontré un bogue dans un script où j'ai essayé de faire ce qui suit:

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

Le script fonctionnait bien sur un CentOS plus récent, mais lorsque j'ai essayé de l'exécuter sur Cent OS 5, il some_package.x86_64n'était pas disponible. Mais au lieu d'erreurs et d'arrêts, il yumsuffit d'imprimer le message:

No package some_package.x86_64 available.

Comment puis-je forcer yumà l'erreur dans de telles situations (quel IMO devrait être la valeur par défaut) pour rendre mes scripts plus robustes?

pmr
la source
Construisez votre script plus fiable et vérifiez la valeur de retour de yum avant de continuer.
2015
1
@frlan C'est le problème. yumrevient heureusement 0dans ce cas. Mon script vérifie déjà la valeur de retour avant de continuer. Remarquez le &&?
pmr

Réponses:

11

Comme vous l'avez constaté, ce comportement a changé entre RHEL 5 et 6 (voir https://bugzilla.redhat.com/show_bug.cgi?id=736694 pour une discussion). À partir de ce lien, la vérification du code retour de yum info <pkg>devrait vous permettre d'interrompre votre script si nécessaire. Quelque chose comme:

# 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
la source
3
OK, cela aide et confirme que je ne suis pas fou de penser que ce devrait être la valeur par défaut.
pmr
2
aide bien, le comportement actuel de yum est assez hostile pour l'utilisation du script.
Karata
14

Par bug 1274211 , cela a été corrigé dans yum-3.4.3-133.el7. Cependant, vous devez activer le mode strict.

La façon la plus simple de le faire à des fins de script est via un commutateur de ligne de commande:

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

Cependant, vous pouvez également le définir comme option de configuration dans votre yum.conf:

[main]
skip_missing_names_on_install=0
Boycott SE pour Monica Cellio
la source