Přes apt se dá zjistit počet aktualizací + nově instalovaných balíků pomocí simulace dist-upgrade:
$ apt-get -s dist-upgrade | grep -c ^Inst
V Ubuntu ale máme i specializovaný skript napsaný v Pythonu, jehož výstupem je celkový počet aktualizací a počet bezpečnostních aktualizací oddělených středníkem. Ovšem výstup vypisuje do stderr, čili chybového výstupu, tudíž pro další zpracování je třeba výstup přesměrovat na standardní výstup stdout:
/usr/lib/update-notifier/apt-check 2>&1
0;0
0;0
Pouze celkový počet aktualizací tedy dostanete drobným ořezem:
$ /usr/lib/update-notifier/apt-check 2>&1 | sed 's/;.*//'
Případně z něj můžete dostat tyto údaje i s omáčkou, ty už sype na stdout sám:
$ /usr/lib/update-notifier/apt-check --human-readable
0 packages can be updated.
0 updates are security updates.
0 packages can be updated.
0 updates are security updates.
Také umí vypsat všechny balíky s dostupnou aktualizací:
$ /usr/lib/update-notifier/apt-check -p
Když jsem příkazy testoval na svém systému, zjistil jsem, že apt-check někdy dává nižší číslo, než apt dist-upgrade. Udělal jsem tedy diff seznamů aktualizovaných balíků obou příkazů a zjistil, že všechny chybějící obsahují řetězec upgrade v názvu. Koukal jsem do skriptu, ale nenašel jsem, kde to mizí.
Pro úplnost má dosavadní metoda přes aptitude:
aptitude search "~U" | wc -l
No a v conkyrc samozřejmě použijete některý z předchozích příkazů nejlépe pomocí:
${texeci 3600 příkaz}
texeci oproti execi spustí příkaz v separátním vláknu, takže dlouho trvající příkaz nebrzdí zpracování dalšího skriptu a 3600 je jedna hodina v sekundách.
Jisté je, že pokud se před tím neaktualizuje databáze aptu, bude to zjišťování k ničemu, ale v tomto spoléhám na automatiku Ubuntu, která to jednou denně projede. Jinak bych si dal apt-get update do crontabu roota.
Ahoj,
OdpovědětVymazatdovolím si k tomu jeden postřeh, Ubuntu server 12.04 a asi i novější používají na tyto účely skript "/usr/lib/update-notifier/update-motd-updates-available" (součást balíku "update-notifier-common"), který je většinou mnohem rychlejší než apt-check (2s oproti 0.1s), protože cachuje odpovědi.
No vidiš, to jsem minul úplně, díky. Je to i na 14.04.
Vymazathezké, update-motd-updates-available se mi bude hodit, jen se dívám, že v conky by se to asi mělo spouštět s parametrem --force, jinak to vyžaduje práva roota
VymazatGdH: texeci taky vypadá zajímavě, musím to doma vyzkoušet na volání skriptu počasí, mohlo by mi to urychlit zobrazení conky při spuštění (jestli se nepletu)
Ten update-motd-updates-available potřebuje práva jen kvůli tomu, že si výsledek volání apt-check zapisuje do /var/lib/update-notifier/updates-available, kam uživatel zapisovat nemůže. Testuje změny ve /var/lib/apt/lists/ a /etc/apt/sources.list a volá apt-check jen tehdy, když se objeví nějaká změna a jinak plive jeho předchozí výstup ze souboru. Volba --force způsobí pouze to, že bude bude volat apt-check vždy, čímž pozbývá význam.
Vymazat