Bagaimana menemukan jumlah paket yang membutuhkan pembaruan dari baris perintah?

34

Saya sedang mengerjakan beberapa sistem admin otomasi menggunakan fabric dan saya ingin dapat memonitor jumlah paket yang perlu ditingkatkan pada mesin yang diberikan. Ini adalah informasi yang sama yang dapat saya lihat ketika saya pertama kali masuk ke mesin, yaitu bagian ini:

35 packages can be updated.
22 updates are security updates.

Apakah ada perintah yang bisa saya jalankan (lebih baik tanpa sudo) yang hanya memberikan informasi itu?

Saya telah melihat binding apt-python, tetapi mereka tampaknya memiliki kurva belajar yang tinggi dan mereka juga tampaknya banyak berubah - saya ingin sesuatu yang akan bekerja setidaknya sejauh jernih tanpa perlu lakukan hal yang berbeda pada versi Ubuntu yang berbeda.

KayEss
sumber

Jawaban:

33

Untuk mendapatkan output itu, Anda dapat menggunakan perintah

sudo /usr/lib/update-notifier/update-motd-updates-available

atau, jika Anda tidak ingin menggunakan sudo,

cat /var/lib/update-notifier/updates-available

Penjelasan

The loginaplikasi menunjukkan output yang ditemukan dalam file /etc/motd, yang merupakan symbolic link ke /var/run/motd.

File terakhir ini diperbarui oleh mounted-varrunlayanan (lihat /etc/init/mounted-varrun.conf) memanggil semua skrip /etc/update-motd.d/, dan khususnya

/etc/update-motd.d/90-updates-available

yang pada gilirannya memanggil skrip

/usr/lib/update-notifier/update-motd-updates-available

skrip ini menjalankan berbagai tindakan, dan akhirnya menulis output ke file teks

/var/lib/update-notifier/updates-available

EDIT

Mengenai bagian reboot dari pertanyaan, jalankan perintah ini

/usr/lib/update-notifier/update-motd-reboot-required

itu tidak akan memberikan output jika reboot tidak diperlukan.

enzotib
sumber
Saya hanya memeriksa mesin yang menjalankan 11,04 dan byobu menunjukkan 44 pembaruan yang diperlukan. cating file yang Anda sarankan kosong, dan script yang Anda tuju pertama kali tidak ada pada mesin ini - apakah itu dalam beberapa paket yang perlu diinstal? Saya punya /usr/lib/update-manager, tetapi tidak ada update-notifierdirektori.
KayEss
Diuji pada desktop 11,04. File-file itu milik update-notifier-commonyang diinstal secara otomatis pada instalasi baru (bukan upgrade dari 10,10).
enzotib
Saya telah melihat beberapa mesin lagi. Bagi mereka yang memiliki /var/lib/update-notifier/apt-checkini sepertinya mengembalikan dua angka, yaitu 43; 24 (43 pembaruan, 24 adalah yang keamanan), tetapi bahkan yang tidak muncul di semua mesin saya. Saya kira file ini mungkin telah berpindah antar paket dalam versi yang berbeda.
KayEss
21

Mengapa Anda tidak bisa menjalankan ini saja?

/usr/lib/update-notifier/apt-check --human-readable

Itulah yang dilakukan oleh / usr / lib / update-notifier / update-motd-updates untuk mengumpulkan informasi, setidaknya dalam versi Ubuntu yang saya gunakan (12.10).

Tom Barron
sumber
Baru saja memeriksa Lucid dan berfungsi juga di sana
KayEss
2
Itu menulis outputnya ke stderr. Siapa yang akan melakukan itu?
KayEss
2
Lebih suka pendekatan ini karena sepenuhnya langkah langkah keseluruhan update-motdpaket dan pemikirannya Terima kasih telah memberikan perintah langsung.
jefflunt
3

Saya juga mencari metode skrip untuk cek pembaruan di dalam wadah buruh pelabuhan minimal, ketika saya menemukan komentar di /usr/lib/update-notifier/apt-check:

apt-get -s -o Debug::NoLocking=true upgrade | grep ^Inst

Ini memungkinkan pemeriksaan pembaruan yang ditulis dengan skrip, tanpa perlu menginstal update-notifier-commonpaket

Simon Sudler
sumber
0

Anda dapat menggunakan check_aptplugin dari monitoring-plugins-basic( Nagios ), dengan keuntungan mendapatkan kode pengembalian yang berbeda tergantung pada apakah pembaruan tersedia:

$ /usr/lib/nagios/plugins/check_apt
APT WARNING: 18 packages available for upgrade (0 critical updates). |available_upgrades=18;;;0 critical_updates=0;;;0
$ echo $?
1

Kode pengembalian memiliki arti sebagai berikut:

  • 0 -> tidak ada paket yang tersedia untuk peningkatan
  • 1 -> paket tidak penting tersedia untuk peningkatan
  • 2 -> pembaruan kritis tersedia

Referensi:

Clauz
sumber