Bagaimana cara mengetahui apakah ada pembaruan yang tersedia?

8

Saya menjalankan server ubuntu 12,04 LTS. Dan saya pikir akan lebih baik jika saya dapat diberi tahu ketika pembaruan tersedia. Tetapi saya tidak dapat menemukan cara untuk mengetahui ...

Saya sudah mencoba melihat apt-gethalaman manual. Dari sana saya bisa menggunakan apt-get -s upgradeuntuk mendapatkan keluaran apt-get dalam skrip tanpa memblokir pertanyaan.

Sekarang, saya jelas melihat perbedaan:

Pembaruan tersedia:

apt-get -s upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be upgraded:
  dpkg dpkg-dev libdpkg-perl
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst dpkg [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [amd64])
Conf dpkg (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [amd64])
Inst dpkg-dev [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all]) []
Inst libdpkg-perl [1.16.1.2ubuntu7.2] (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])
Conf libdpkg-perl (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])
Conf dpkg-dev (1.16.1.2ubuntu7.3 Ubuntu:12.04/precise-updates [all])

Pembaruan tidak tersedia:

apt-get -s upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Tapi saya tidak tahu bagaimana melanjutkan dari sana. Bagaimana saya bisa tahu, dari skrip bash (atau skrip php) bahwa ada pembaruan yang tersedia atau tidak?

Edit:

Ini kode bash saya saat ini. Tidak bekerja.

updates_available=`/etc/update-motd.d/90-updates-available`

if [ "${updates_available}" = "0 packages can be updated. 0 updates are security updates." ];
then
   echo "No updates are available"
else
   echo "There are updates available"
fi
Adeline
sumber
Yah itu hanya akan mengatakan 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.jika tidak ada pembaruan.
Nattgew

Jawaban:

18

Baca halaman manual untuk motd(5), pam_motd(8)dan update-motd(5). Di sistem saya, /etc/update-motd.d/90-updates-availableaktifkan /usr/lib/update-notifier/update-motd-updates-availableyang menampilkan ini ketika saya masuk:

19 packages can be updated.
12 updates are security updates.

Menggali lebih dalam, skrip "...- pembaruan tersedia" memanggil /usr/lib/update-notifier/apt-check --human-readable. Jika Anda membaca itu (python), Anda akan melihat bahwa jika Anda menghilangkan flag yang dapat dibaca manusia, itu akan menampilkan "19; 12" ke stderr. Kita bisa ambil itu dengan ini:

IFS=';' read updates security_updates < <(/usr/lib/update-notifier/apt-check 2>&1)
echo $updates
echo $security_updates 
19
12

Sekarang Anda bisa mengatakan:

if (( updates == 0 )); then
    echo "No updates are available"
else
    echo "There are updates available"
fi
glenn jackman
sumber
Saya dapat melakukannya dan menguji if [ /etc/perbarui/motd.d/90 -perbarui-available` = "0 paket dapat diperbarui. 0 pembaruan adalah pembaruan keamanan." ]; lalu ... fi`
Adeline
Sayangnya, cek tidak berfungsi (saya menambahkan tanda kutip yang terlupa di balasan saya sebelumnya.) Saya menduga ada hubungannya dengan baris baru. Saya telah memperbarui posting saya dengan kode yang saya dapatkan dari balasan Anda.
Adeline
jawaban halus.
glenn jackman
Jawaban yang luar biasa, @glennjackman. Saya akan menjawab dengan google.com/search?q=apt-get+check+if+updates+are+available #ImNotHelpfulToday =)
0xSheepdog