10
votes

Comment s'assurer que Yum Install a été réussi dans un script shell?

J'ai un script shell qui vérifie s'il existe une connexion Internet (en pinging google), puis appelle xxx

Comment puis-je confirmer que les packages ont été installés (ou déjà installées )? Est-ce que je fais un autre appel miam et analyser la sortie (je présume que cela devient très compliqué si le système est dans une autre langue)?


2 commentaires

Vous pouvez grep ou analysez /var/log/yum.log


Réglage lc_all = C doit passer en anglais.


3 Réponses :


7
votes

basé sur Ceci Post aléatoire , il semble que Yum renvoie un code d'erreur à la coquille. Vous pouvez le tester en exécutant une commande, puis immédiatement (comme la commande suivante) faisant: xxx

qui imprimera le code retour de la commande précédente. Le succès devrait être 0, échec d'une sorte de type non nul. Mais c'est juste une supposition depuis que je n'ai pas une boîte accessible pour moi pour le moment. :)


2 commentaires

Cela devrait être de la façon dont cela fonctionne. Ma version de Yum sort avec succès, même sur certains échecs; Yum Installer non-existant-package && echo "Je pense que ça s'est bien passé"


Comme indiqué ci-dessus, il y a un certain nombre de cas où miam retourne 0, même si je considérerais que cela a échoué, par exemple. Vous avez spécifié un nom de package, mais ce package n'a pas pu être trouvé dans un référentiel configuré ou vous avez spécifié un nom de fichier, mais le fichier n'a pas été trouvé. Le statut de sortie YUM est tout simplement utile.



6
votes

by ping google.com ne garantit pas que le yum repo que vous essayez de vous connecter est disponible

la commande à vérifier si un package est déjà installé: - p>

yum list installed PACKAGE_NAME


2 commentaires

Merci Ajreal - Je ne faisais que Ping Google de voir si DNS fonctionnait et s'il y avait une connectivité.


Bien que cela ne réponde pas directement à la question, cela répond à ma question! +1 pour vous



13
votes

J'ai utilisé la méthode suivante, qui pourrait ne pas être infaillible, mais semble fonctionner:

En supposant que la variable packages contient la liste des packages que vous souhaitez installer, puis:

  1. Exécuter yum -y installer $ packages (Je suppose s'il s'agit d'un script, vous voulez vraiment passer -y pour éviter de vous inviter).
  2. Vérifiez son statut de sortie afin de détecter les certains conditions de défaillance.
  3. Exécuter RPM --Query --Quiseryformat "" $ packages , qui ne produira rien pour chaque package installé avec succès et donnera la sortie package n'est pas installé pour chaque échec.
  4. Vérifiez son statut de sortie, ce qui semble être le nombre de packages non installé avec succès, c'est-à-dire 0 sur le succès comme d'habitude.

    Ceci ne fonctionnera que si packages contient des noms de paquets simples que yum est censé trouver dans un référentiel, non s'il contient d'autres choses que miam Accepte des URL, des noms de fichiers ou fournit: noms.


0 commentaires