Memblokir pembaruan kernel dengan dpkg

16

Saya ingin memblokir semua pembaruan kernel yang dikirimkan distribusi karena hal buruk yang baru-baru ini terjadi pada saya. (Saya menggunakan turunan Ubuntu 12.04 amd64.)

Saya ingin memblokir semua update kernel diinstal dari versi minor 3.2 ke linux-headers, linux-headers-generic, linux-image, dan linux-image-extrapaket. Masalah yang saya temui adalah bahwa ini semua memiliki versi dan jika saya memblokir versi tertentu, tidak ada yang diperoleh karena versi baru akan diinstal (misalnya: jika saya memblokir linux-image-3.2.0-35, linux-image-3.2.0-36tidak diblokir dan masih berpotensi diinstal dengan dist-upgradedari apt.)

Naftuli Kay
sumber
Perhatikan bahwa ini tidak lagi berfungsi di Ubuntu 16.04. Anda perlu memasukkan paket blacklist menggunakan panduan ini: help.ubuntu.com/lts/serverguide/automatic-updates.html
user199618

Jawaban:

17

Yang perlu Anda gunakan adalah fitur apt-get yang disebut holding

Anda dapat melakukan ini melalui Synaptic atau Dpkg, Inilah cara saya memegang kernel saya menggunakan metode dpkg.

Pertama periksa nama gambar kernel Anda

dpkg -l | grep linux-image

output untuk saya:

ii  linux-image-3.2.0-4-amd64              3.2.35-2                           amd64        Linux 3.2 for 64-bit PCs
ii  linux-image-amd64                      3.2+46                             amd64        Linux for 64-bit PCs (meta-package)

kemudian beri tahu dpkg untuk menyimpan metapackage (versi generik tanpa nomor versi)

echo linux-image-amd64 hold | sudo dpkg --set-selections

Anda kemudian dapat memeriksa ini berfungsi melalui dpkg -l linux-image-amd64

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                       Version            Architecture       Description
+++-==========================-==================-==================-==========================================================
hi  linux-image-amd64          3.2+46             amd64              Linux for 64-bit PCs (meta-package)

Perhatikan 'hai' di bagian bawah, h berarti ditahan dan saya berarti saat ini diinstal. Paket ini diinstal tetapi tidak akan ditingkatkan.

Anda dapat membalikkan ini melalui

echo linux-image-amd64 install | sudo dpkg --set-selections

dan lagi dapat memeriksa melalui dpkg -l linux-image-amd64

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                       Version            Architecture       Description
+++-==========================-==================-==================-==========================================================
ii  linux-image-amd64          3.2+46             amd64              Linux for 64-bit PCs (meta-package)

Perhatikan 'ii', yang pertama berarti paket ini diset untuk menginstal dan yang kedua berarti paket itu sedang diinstal. Paket ini diinstal dan akan ditingkatkan.

Untuk informasi lebih lanjut tentang flag-flag ini lihat man dpkgsecara khusus bagian 'status pemilihan paket'.

cjh
sumber
1
Nama gambar saya ada di sini . Apakah saya ingin melarang "linux-image-generic"?
Naftuli Kay
1
@TKKocheran ya; Anda ingin menahan metapackage, bukan versi tertentu.
cjh
Tidak berfungsi - dpkg: warning: paket tidak dalam status atau basis data yang tersedia di baris 1: linux-image-amd64 dpkg: peringatan: ditemukan paket yang tidak dikenal; ini mungkin berarti database yang tersedia sudah usang, dan perlu diperbarui melalui metode frontend; silakan lihat FAQ < wiki.debian.org/Teams/Dpkg/FAQ >
Arturas M