Çekirdek güncellemesi nasıl atlanır?


25

VirtulBox'ta Ubuntu 12.04.1 LTS i686 kullanıyorum. Güncellemeleri her kontrol ettiğimde yeni bir Linux çekirdeği var. Eğer yeni çekirdeği kurarsam, Virtulbox Misafir Eklemelerini tekrar kurmalı ve sunucuyu yeniden başlatmalıyım. Bunu her hafta yapmak istemiyorum. Çekirdek paketlerini güncelleme yöneticisinden el ile işaretleyebildiğimi biliyorum, ancak çekirdek güncelleştirmesini otomatik olarak atlamanın bir yolu var mı? Burada bir cevap buldum ama bu Ubuntu 10'a ait.

Yanıtlar:


18

APT (Advanced Packaging Tool), Ubuntu'nun sistemde kurulu tüm yazılımı yönetmek için kullandığı sistemdir. Bir paketi belirli bir sürüme "sabitlemenizi" sağlar, böylece Güncelleme Yöneticisi çalıştığınızda güncellenmeyecektir.

Çekirdek paketlerinizi sabitlemek için önce çekirdeğinizin hangi sürüm olduğunu belirlemelisiniz. Bunu yapmanın bir yolu, Synaptic Package Manager'ı System> Administration'da açmak.

görüntü tanımını buraya girin

Hızlı arama metin alanına "linux-generic" yazın ve enter tuşuna basın.

görüntü tanımını buraya girin

“Installed Version” sütununda listelenen numaralara dikkat edin. Bir sonraki adımda kullanacağız.

Daha sonra, / etc / apt / preferences dosyasını düzenlemeliyiz. Uygulama Çalıştır penceresini açmak ve girmek için Alt + F2 tuşlarına basarak açın:

gksudo gedit /etc/apt/preferences

görüntü tanımını buraya girin

Bu bir gedit penceresi açacaktır. Daha önce APT ile oynamadıysanız, büyük olasılıkla pencere boş olacak.

Pencerede, sürüm numarasını Synaptic Paket Yöneticisi'nde bulduğunuz sürüm numarasıyla değiştirerek aşağıdakini yazın.

Package: linux-generic linux-headers-generic linux-image-generic linux-restricted-modules-generic
Pin: version <insert version here>
Pin-Priority: 1001

görüntü tanımını buraya girin

Dosyayı kaydedin ve gedit'i kapatın. Güncelleme Yöneticisini açarsanız, Linux çekirdek güncellemelerinin artık gizli olduğunu görmelisiniz!

görüntü tanımını buraya girin

Kaynak

APT / DPKG ile paketleri engelleme

Çekirdeğinizin paket adını yukarıdan hatırlayın.

Bir terminal açın ve çalıştırın:

sudo -s

Ve vur enter.

Sudo şifrenizi girin:

echo kernel_package_name hold | dpkg --set-selections

Sabitlemek kernel_package_nameistediğiniz çekirdeğin adıyla değiştirin .

Şimdi koş:

sudo apt-get update && sudo apt-get upgrade

Pimi Apt / Dpkg'dan çıkarmak için:

Bir terminal aç

sudo -s
echo kernel_package install | dpkg --set-selections

Kernel_package'ı sabitlemek istediğiniz paketle değiştirin.

Şimdi koş:

sudo apt-get update &&  sudo apt-get upgrade

Kaynak

Yapmaya çalıştığın şey iğneleme olarak adlandırılıyor. Size yukarıda verdiğim kaynaklar, elinizde görevlerinizi yerine getirmek için yapmanız gerekenler hakkında temel bilgilere sahiptir.


1
Cevabın için teşekkürler. Farklı sürümü kullanıyoruz gibi görünüyor. Ubuntu 12.04'ümde Synaptic Paket Yöneticisi ve / etc / apt / tercihlerim yok.
garconcn

2
Evet, Synaptic artık varsayılan olarak kurulmuyor.
imsi

1
@garconcn, Synaptic'i yükleyebilir ve size söylediğim düzeltmeyi yükleyebilir veya daha fazla bilgi
verdiğimden

2
@LnxSlck, Synaptic'i kurdum ve talimatınızı takip ettim. İşe yarıyor. Teşekkürler.
garconcn

16

Bir satırda:

echo $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}') hold | dpkg --set-selections

Gelen bu irade seti çekirdeğin görüntü devlet yüklemek için beklemeye güncellemelerini engelleyecektir böylece ve.


8

Christoph'un bir astarı ekstra paketi hesaba katmaz (örn. Linux-image-extra-3.13.0-45-general). Bunu kullanmak yerine:

$ i için (dpkg -l "* $ (uname -r) *" | grep image | awk '{print $ 2}'); echo $ ben tutun | dpkg - set-seçimleri; tamam

4

Superlexx'in önerisi ile ilgili olarak: bu satır "başlıklar" paketini özleyecektir:

dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'
linux-image-3.13.0-48-generic
linux-image-extra-3.13.0-48-generic

Peki, sadece aşağıdakileri kullanmaya ne dersiniz:

dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'
linux-headers-3.13.0-48-generic
linux-image-3.13.0-48-generic
linux-image-extra-3.13.0-48-generic

1
Ekstralar / başlıklar / etc paketleri işaretlenmemişse, sorunlar var mı? Yoksa bütünlük için onları da işaretlemeyi mi öneriyorsun? Ubuntu’nun linux-image yükleninceye kadar güncellenmiş bir başlık paketi yüklemeye çalışmamasını beklerdim (başlıklar görüntünün bağımlılığı olur). Bunu henüz doğrulamamıştım.
whitehat101

2
Birbirinize 3 atak istiflemek yerine, tek bir liner üzerinde işbirliği yapabilirsiniz. = P Sadece sayin
cubuspl42

1
Eğer zaten awk kullanıyorsanız, grep'i çağırmak gereksizdir:dpkg -l "*$(uname -r)*" | awk '/kernel/{print $2}'
Javier López

1

Bu, çekirdek güncellemelerini etkinleştiren çekirdek çekirdek paketlerini temizler:

sudo apt purge $(apt-cache rdepends -i --installed linux-{headers,image}-$(uname -r)|awk '!/[0-9]/ && /^[ ]/{print $1}')

(Çekirdeği yeni yükselttiyseniz, önce yeni çekirdeği yeniden başlatmanız ya da en yeni çekirdek sürümünü bulup "$ (uname -r)" yerine yukarıdan kullanmanız gerekir.)

Ancak çoğunlukla güvenlik güncelleştirmeleri olduklarından çekirdek güncelleştirmelerini yüklemeniz önerilir.


0

Ubuntu 16.04.1'de aşağıdaki kod çalışır

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i hold | sudo dpkg --set-selections; done

Superlexx kodunun bir gelişme, sudoilave edilir

dpkg -l | grep linux-image

Bulacaksın:

merhaba linux-görüntü-4.4.0-34-genel ...

merhaba linux-görüntü-ekstra-4.4.0-34-genel ...

etiket artık okur unutmayın hi, değilii

pimi çıkarmak için

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i install | sudo dpkg --set-selections; done

Güzel cevap ama sudoyorumu
girmediniz

0

Daha kısa versiyon: (Pimi çıkarmak için "tutma" yerine "yükleme" kullanın)

 dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2,"hold"}' | sudo dpkg --set-selections

Tüm çekirdek görüntülerinin ve başlıklarının durumunu görmek için koşun:

 dpkg --get-selections | grep "linux-"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.