Fai "apt-get update" per mostrare l'output esatto come `apt update`


8

Sto imparando l'interfaccia della CLI di Advanced Packaging Tool. Dall'output di apt(8)quando il suo stdout non è un terminale, non è adatto per "script che prevedono un'interfaccia di programmazione stabile", quindi sto dando un'occhiata apt-get(8).

Una differenza tra apt updatee apt-get updateè che a quest'ultima manca un'ultima riga dopo che tutta la cache è stata aggiornata:

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

Voglio sapere come posso visualizzare questa riga esatta con apt-get(8).


Per quanto ne sapevo, apt(Advanced Packaging Tool) e apt-getsono cose diverse. Sono progettati per funzionare in modo diverso da quello che ho capito. Se uno ti dà quello che vuoi, forse prendi l'abitudine di usare quel comando invece.
Brenden McFarling,

Risposte:


9

man apt-get Spettacoli:

   -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.

Quindi se fai solo:

apt-get upgrade --dry-run

produrrà:

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

Sì, ho esaminato man 8 apt-getquesta opzione, ma l'output era diverso da apt.
iBug

Diverso come? Ho appena controllato il mio sistema ed è identico. Ho pensato che fosse identico perché in aptrealtà è un wrapper programmatico apt-geted è per questo che esiste l'avvertimento.
tu-Reinstate Monica-dor duh

aptmostra 8 packages can be upgraded. Run 'apt list --upgradable' to see them., mentre la tua risposta mostra4 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
iBug

1
Sì, è perché hai 8 da aggiornare dove ne ho 4. O ti riferisci al fatto che il testo è diverso?
tu-Reinstate Monica-dor duh

4
Sì, questo è esattamente ciò di cui parla l'avvertimento. aptnon ti garantiranno quel testo e potrebbero anche non garantirti quel numero. apt-gettuttavia ha un rigoroso requisito di output perché viene utilizzato da altri software (come interfacce utente e demoni) per elaborarlo in vari modi. Quindi puoi modificare il tuo codice per accettare apt-getl'output o | sed 's/to upgrade/packages can be upgraded/g', ad esempio, puoi (e rischiare che il tuo codice venga infranto in seguito).
tu-Reinstate Monica-dor duh

4

Supponendo che tu debba gestire il numero di aggiornamenti disponibili, ecco un suggerimento:

# 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

Non c'è bisogno di sudo
L'output è facile da lavorare

Più opzioni:

> /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)

È questa la cosa esatta usata per generare motdil login SSH?
iBug

sì, sembra lo stesso output, ma non so come fa motd
cmak.fr

2

Da man 8 apt:

... abilita alcune opzioni ...

Poi ho passato /usr/share/doc/apt/examples/configure-index.gz(usando zcat(1)per mostrare il contenuto del testo) e ho notato questa opzione:

apt::cmd::show-update-stats

Quindi ho elaborato il seguente comando che ha fatto esattamente quello che volevo:

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

Testato per lavorare su Xenial e Bionic.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.