J'ai trouvé ce qui suit sur une question semi-liée à StackOverflow ; la réponse dont j'avais besoin ne répondait pas vraiment à la question (et n'a pas été sélectionnée comme bonne réponse); j'ai donc pensé la poster ici pour que les autres le trouvent plus facilement.
yum list installed PACKAGE_NAME
Cette commande renvoie une sortie lisible par l’homme, mais surtout un code d’état de sortie; 0 indique que le package est installé, 1 indique que le package n'est pas installé (ne vérifie pas si le package est valide, donc yum list installed herpderp-beepbopboop
il renverra un "1" exactement comme yum list installed traceroute
si traceroute n'était pas installé). Vous pouvez ensuite vérifier "$?" pour ce code de sortie.
Comme la sortie est quelque peu contre-intuitive, j'ai utilisé la version "condensée" de @Chris Downs ci-dessous dans une fonction wrapper pour rendre la sortie plus "logique" (c'est-à-dire 1 = installé 0 = non installé):
function isinstalled {
if yum list installed "$@" >/dev/null 2>&1; then
true
else
false
fi
}
l'utilisation serait
if isinstalled $package; then echo "installed"; else echo "not installed"; fi
MODIFIER:
Les return
instructions remplacées par des appels à true
et false
qui aident à rendre la fonction plus lisible / intuitive, tout en renvoyant les valeurs attendues par bash (c'est-à-dire 0 pour true, 1 pour false).
Si vous ne recherchez qu'un package dans votre script, il peut être préférable de tester yum list installed
directement, mais (à mon humble avis), la fonction facilite la compréhension de ce qui se passe et sa syntaxe est beaucoup plus simple à retenir que yum
pour toutes les redirections. pour supprimer sa sortie.
$?
, mais juste d'envelopper la commande dans une condition:if yum list installed "$package" >/dev/null 2>&1; then [...]