Question yum devrait commettre une erreur lorsqu'un paquet n'est pas disponible


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, some_package.x86_64 n'était pas disponible. Mais au lieu de se tromper et de s'arrêter yum vient d'imprimer le message:

No package some_package.x86_64 available.

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


10
2018-05-28 09:26


origine


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


Réponses:


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 discussion). À partir de ce lien, vérifiez le code de retour de yum info <pkg> devrait vous permettre d’avorter 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

10
2018-05-28 10:47



OK, cela aide et confirme que je ne suis pas fou de penser que cela devrait être le cas par défaut. - pmr
aide bien, le comportement actuel de yum est assez hostile pour l’utilisation de scripts. - Karata


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

Le moyen le plus simple de procéder à l'aide de scripts consiste à utiliser le 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

2
2017-07-24 22:06