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


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

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)

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.