Spraw, aby „apt-get update” pokazywał dokładny wynik jako „apt update”

8

Uczę się interfejsu CLI Advanced Packaging Tool. Z wyjścia, apt(8)gdy jego standardowe wyjście nie jest terminalem, nie nadaje się do „skryptów oczekujących stabilnego interfejsu programistycznego”, więc przyjmuję apt-get(8).

Jedną różnicą między apt updatei apt-get updatejest to, że ten ostatni brakuje ostatniej linii po zaktualizowaniu całej pamięci podręcznej:

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

Chcę wiedzieć, jak mogę wyświetlić dokładnie ten wiersz apt-get(8).

iBug
źródło
O ile mi wiadomo, apt(Advanced Packaging Tool) i apt-getsą różne rzeczy. Są zaprojektowane tak, aby działały inaczej niż rozumiałem. Jeśli ktoś daje ci to, czego chcesz, być może nawyk używania tego polecenia.
Brenden McFarling

Odpowiedzi:

9

man apt-get przedstawia:

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

Więc jeśli tylko to zrobisz:

apt-get upgrade --dry-run

wyświetli:

...
4 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
...
tu-Reinstate Monica-dor duh
źródło
Tak, przeszedłem man 8 apt-geti znalazłem tę opcję, ale wynik był inny niż apt.
iBug
Inaczej jak? Właśnie sprawdziłem swój system i jest identyczny. Myślałem, że jest identyczny, ponieważ aptjest to naprawdę programowe opakowanie apt-geti to jest powód, dla którego istnieje ostrzeżenie.
Tu-Reinstate Monica-dor duh
aptpokazuje 8 packages can be upgraded. Run 'apt list --upgradable' to see them., a twoja odpowiedź pokazuje4 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade.
iBug
1
Tak, to dlatego, że masz 8 do uaktualnienia tam, gdzie ja 4. Czy masz na myśli, że tekst jest inny?
Tu-Reinstate Monica-dor duh
4
Tak, dokładnie o to chodzi w ostrzeżeniu. aptnie zagwarantuje ci tego tekstu i mogą nawet nie zagwarantować ci tego numeru. apt-getma jednak ścisły wymóg wyjściowy, ponieważ jest używany przez inne oprogramowanie (takie jak interfejsy użytkownika i demony) do przetwarzania go na różne sposoby. Możesz więc zmienić kod, aby akceptował apt-getdane wyjściowe, lub możesz | sed 's/to upgrade/packages can be upgraded/g'na przykład (i zaryzykować złamanie kodu później).
Tu-Reinstate Monica-dor duh
4

Zgaduję, że musisz obsłużyć liczbę dostępnych aktualizacji, oto sugestia:

# 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

Nie ma potrzeby sudo
Wyjście jest łatwe w obsłudze

Więcej opcji:

> /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)
cmak.fr
źródło
Czy to jest dokładnie to, czego używa się motdprzy logowaniu SSH?
iBug
tak, wygląda to tak samo, ale nie wiem jak motd
cmak.fr
2

Od man 8 apt:

... włącza niektóre opcje ...

Następnie przeszedłem /usr/share/doc/apt/examples/configure-index.gz(używając zcat(1)do wyświetlenia zawartości tekstu) i zauważyłem tę opcję:

apt::cmd::show-update-stats

Opracowałem więc następującą komendę, która zrobiła dokładnie to, co chciałem:

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

Testowany pod kątem pracy z Xenial i Bionic.

iBug
źródło