Faire «apt-get update» afficher la sortie exacte comme «apt update»


8

J'apprends l'interface CLI de Advanced Packaging Tool. À partir de la sortie de apt(8)lorsque sa sortie standard n'est pas un terminal, il ne convient pas aux "scripts qui attendent une interface de programmation stable", donc je regarde apt-get(8).

Une différence entre apt updateet apt-get updateest que ce dernier manque une dernière ligne après que tout le cache a été mis à jour:

8 packages can be upgraded. Run 'apt list --upgradable' to see them.

Je veux savoir comment afficher cette ligne exacte avec apt-get(8).


Pour autant que je sache, apt(Advanced Packaging Tool) et apt-getsont des choses différentes. Ils sont conçus pour fonctionner différemment de ce que j'ai compris. Si l'on vous donne ce que vous voulez, prenez peut-être l'habitude d'utiliser cette commande à la place.
Brenden McFarling

Réponses:


9

man apt-get montre:

   -s, --simulate, --just-print, --dry-run, --recon, --no-act
       No action; perform a simulation of events that would occur based on
       the current system state but do not actually change the system.
       Locking will be disabled (Debug::NoLocking) so the system state
       could change while apt-get is running. Simulations can also be
       executed by non-root users which might not have read access to all
       apt configuration distorting the simulation. A notice expressing
       this warning is also shown by default for non-root users
       (APT::Get::Show-User-Simulation-Note). Configuration Item:
       APT::Get::Simulate.

Donc, si vous le faites:

apt-get upgrade --dry-run

il affichera:

...
4 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
...

Oui, je suis passé par là man 8 apt-getet j'ai trouvé cette option, mais la sortie était différente de apt.
iBug

Différent comment? Je viens de vérifier mon système et c'est identique. Je pensais que c'était identique car aptc'est vraiment un wrapper programmatique apt-getet c'est la raison pour laquelle l'avertissement existe.
tu-Reinstate Monica-dor duh

aptmontre 8 packages can be upgraded. Run 'apt list --upgradable' to see them., tandis que votre réponse montre4 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
iBug

1
Oui, c'est parce que vous avez 8 pour mettre à niveau où j'ai 4. Ou faites-vous référence au texte étant différent?
tu-Reinstate Monica-dor duh

4
Oui, c'est exactement de cela qu'il s'agit. aptne vous garantira pas ce texte, et ils peuvent même ne pas vous garantir ce numéro. apt-geta cependant une exigence de sortie stricte car il est utilisé par d'autres logiciels (comme les interfaces utilisateur et les démons) pour le traiter de différentes manières. Vous pouvez donc soit modifier votre code pour accepter apt-getla sortie de, soit le faire | sed 's/to upgrade/packages can be upgraded/g'par exemple (et risquer de casser votre code plus tard).
tu-Reinstate Monica-dor duh

4

En supposant que vous devez gérer le nombre de mises à jour disponibles, voici une suggestion:

# With no option, returns two numbers, no CR nor LF
/usr/lib/update-notifier/apt-check

# With --human-readable, returns numbers, locale LANG text & CR/LF
/usr/lib/update-notifier/apt-check  --human-readable

Pas besoin de sudo
La sortie est facile à utiliser

Plus d'options:

> /usr/lib/update-notifier/apt-check  --help
Usage: apt-check [options]

Options:
  -h, --help            show this help message and exit
  -p, --package-names   Show the packages that are going to be
                        installed/upgraded
  --human-readable      Show human readable output on stdout
  --security-updates-unattended
                        Return the time in days when security updates are
                        installed unattended (0 means disabled)

Est-ce la chose exacte utilisée pour générer une motdconnexion SSH?
iBug

oui ça ressemble à la même sortie, mais je ne sais pas comment motd
cmak.fr

2

De man 8 apt:

... active certaines options ...

Ensuite, j'ai parcouru /usr/share/doc/apt/examples/configure-index.gz(en utilisant zcat(1)pour afficher le contenu texte) et j'ai remarqué cette option:

apt::cmd::show-update-stats

J'ai donc élaboré la commande suivante qui a fait exactement ce que je voulais:

# apt-get -o apt::cmd::show-update-stats=true update

Testé pour travailler sur Xenial et Bionic.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.