Saya ingin skrip pelaporan yang dijalankan cron memberi tahu saya jika ada pembaruan untuk paket saya. Apakah cara untuk apt-get
memberi saya daftar pembaruan yang tersedia tetapi tidak melakukan apa-apa lagi?
209
Untuk versi modern apt
ada saklar khusus untuk ini:
apt list --upgradable
Untuk apt-get
perintah lama , -u
sakelar menampilkan daftar paket yang tersedia untuk ditingkatkan:
# apt-get -u upgrade --assume-no
Dari apt-get
halaman manual :
-u
--show-upgrade Tampilkan paket yang ditingkatkan; Cetak daftar semua paket yang akan ditingkatkan. Item Konfigurasi: APT :: Get :: Show-Upgrade.
--assume-no Otomatis "tidak" ke semua prompt. <== Untuk mencegahnya mulai menginstal
-u
adalah opsi defaultapt-get
Tidak dibaca dengan mudah, di bawah ini adalah perl one liner untuk mem-parsing keluaran apt-get:
Ini akan menghasilkan sesuatu seperti:
Semoga itu akan membantu orang lain,
sumber
column
apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}' | column -s " " -t
Pilihan lain, terinspirasi oleh enzotib:
Perintah ini akan menggunakan aptitude untuk menampilkan paket-paket baru dan kemudian wc untuk hanya menghitung baris.
Pada sidenote, saya menemukan bahwa solusi enzotib tanpa tanda kutip tunggal di sekitar ~ U tidak bekerja untuk saya. (Wheezy, ZSH, bakat 0.6.8.2)
Perbarui:
Dengan apt baru yang dapat Anda lakukan sekarang:
sumber
Yang termudah adalah:
sumber
Anda bisa lari
atau yang tidak berdokumen
Metode lain menggunakan
apt-get
simulasi:sumber
dist-upgrade
tetapi tidak kehilangan beberapa paket sehingga perlu digunakanaptitude
.aptitude install $(apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }')
lakukan triknya!Lihatlah paket "apticron":
apticron - Alat sederhana untuk mengirim email tentang pembaruan paket yang tertunda
https://packages.debian.org/buster/apticron
sumber
akan mendaftar pembaruan yang tersedia tanpa benar-benar menginstal.
Perintah pertama memperbarui file indeks paket sebelum peningkatan disimulasikan (dengan demikian -s) dilakukan. "-s" akan melakukan peningkatan yang disimulasikan yang memperlihatkan paket yang akan diinstal tetapi sebenarnya tidak akan menginstal apa pun.
Sebaliknya "-u" bukannya "-s" akan benar-benar dipasang setelah konfirmasi.
sumber
-s, --simulate, --just-print, --dry-run, --recon, --no-act
, pengintaian dan pengeringan adalah favorit pribadi saya.Saya memerlukan informasi versi lengkap tentang kemungkinan peningkatan, jadi saya menggunakan modifikasi jawaban jasonwryan:
Ini sederhana dan output IMO diformat secara wajar.
sumber
Cukup filter keluaran
hanya memiliki informasi yang disukai di log Anda.
Kemungkinan besar, Anda akan membutuhkan bagian yang indah setelah garis
yang memiliki beberapa ruang di awal.
sumber
Jet lain on-liner, terinspirasi oleh jawaban ini :
Outputnya terlihat seperti ini (berwarna):
Jika Anda tidak ingin deskripsi singkat gunakan yang ini:
Keluaran:
sumber
adalah yang paling sederhana untuk email cron; tidak ada iterasi pengguna, dan jika tidak ada pembaruan tidak ada output.
sumber
Setelah menulis peringatan untuk jawaban @ jasonwryan, saya ingin memberikan solusi sendiri:
Sayangnya, yang ini tidak berfungsi dengan debian wheezy dan saya harus memeriksa beberapa kontainer lxc yang masih belum diupgrade. Formulir ini akan selalu berfungsi:
Akhirnya, saya juga ingin memformat ulang output. Saya memilih untuk mengubah panggilan lagi (menggunakan
--dry-run
tetapi mengabaikan semua output tambahan) karena rasanya lebih aman:Pengembalian:
sumber
apt-check
mungkin metode scripting yang paling efisien.Modifikasi yang sangat kecil hanya menunjukkan kepada Anda pembaruan keamanan.
sumber
Sebagai variasi, saya menggunakan yang berikut ini:
Masukkan ke dalam skrip bernama
apt-updates
dan Anda kemudian dapat meneleponapt-updates
untuk mendapatkan daftar semua pembaruan terlepas dari pengguna.Anda masih perlu menelepon
apt-get update
dengan akses istimewa.sumber
Ada
apt-show-versions
alatnya. Untuk menampilkan pembaruan yang tersedia jalankan:sumber
Saya suka menggunakan ini:
Anda mendapatkan output seperti ini:
jika ada pembaruan yang tersedia, dan tidak ada jika tidak ada. Dengan cara ini Anda cukup memasangkannya dengan solusi pemantauan.
sumber