web-dev-qa-db-fra.com

Comment trouver le nombre de paquets nécessitant une mise à jour à partir de la ligne de commande?

Je travaille sur une automatisation d'administrateur système à l'aide de fabric et j'aimerais pouvoir contrôler le nombre de paquets nécessitant une mise à niveau sur une machine donnée. C’est la même information que je peux voir lors de ma première connexion à une machine, c’est-à-dire cette partie:

35 packages can be updated.
22 updates are security updates.

Existe-t-il une commande que je peux exécuter (de préférence sans Sudoname__) qui fournit uniquement cette information?

J'ai examiné les liaisons apt-python, mais elles semblent avoir une longue courbe d'apprentissage et semblent également beaucoup changer - je voudrais quelque chose qui fonctionne au moins aussi loin que lucide sans avoir besoin de le faire. faire des choses différentes sur différentes versions d'Ubuntu.

34
KayEss

Pour obtenir cette sortie, vous pouvez utiliser la commande

Sudo /usr/lib/update-notifier/update-motd-updates-available

ou, si vous ne voulez pas utiliser Sudo,

cat /var/lib/update-notifier/updates-available

Explication

L'application login affiche le résultat trouvé dans le fichier /etc/motd, c'est-à-dire un lien symbolique vers /var/run/motd.

Ce dernier fichier est mis à jour par le service mounted-varrun (voir /etc/init/mounted-varrun.conf) en appelant tous les scripts de /etc/update-motd.d/, et en particulier

/etc/update-motd.d/90-updates-available

qui à son tour appelle le script

/usr/lib/update-notifier/update-motd-updates-available

ce script exécute diverses actions et écrit enfin le résultat dans le fichier texte

/var/lib/update-notifier/updates-available

EDIT

En ce qui concerne la partie de redémarrage de la question, exécutez cette commande

/usr/lib/update-notifier/update-motd-reboot-required

il ne donnera aucun résultat si le redémarrage n'est pas requis.

33
enzotib

Pourquoi tu ne peux pas juste courir ça?

/usr/lib/update-notifier/apt-check --human-readable

C'est ce que fait/usr/lib/update-notifier/update-motd-updates-available pour collecter les informations, du moins dans la version d'Ubuntu que j'utilise (12.10).

21
Tom Barron

Je recherche également une méthode scripred pour une vérification de la mise à jour à l'intérieur d'un nombre minimal de conteneurs de menu fixe, lorsque j'ai trouvé un commentaire dans /usr/lib/update-notifier/apt-check:

apt-get -s -o Debug::NoLocking=true upgrade | grep ^Inst

Cela permet une vérification de mise à jour par script, sans qu'il soit nécessaire d'installer le package update-notifier-common.

3
Simon Sudler

Vous pouvez utiliser le plugin check_apt de monitoring-plugins-basic ( Nagios ), avec l’avantage d’obtenir des codes de retour différents selon que les mises à jour sont disponibles:

$ /usr/lib/nagios/plugins/check_apt
APT WARNING: 18 packages available for upgrade (0 critical updates). |available_upgrades=18;;;0 critical_updates=0;;;0
$ echo $?
1

Les codes de retour ont les significations suivantes:

  • 0 -> aucun package disponible pour la mise à niveau
  • 1 -> packages non critiques disponibles pour la mise à niveau
  • 2 -> mises à jour critiques disponibles

Références:

0
Clauz