การบล็อกการอัพเดตเคอร์เนลด้วย dpkg


16

ฉันต้องการปิดกั้นการอัปเดตเคอร์เนลที่จัดส่งกระจายทั้งหมดเนื่องจากสิ่งที่น่ารังเกียจที่เพิ่งเกิดขึ้นกับฉัน (ฉันใช้งาน Ubuntu 12.04 amd64)

ฉันต้องการที่จะป้องกันการอัปเดตทั้งหมดเมล็ดติดตั้งของรุ่นรอง 3.2 ไปlinux-headers, linux-headers-generic, linux-imageและlinux-image-extraแพคเกจ ปัญหาฉันเผชิญหน้าคือเหล่านี้ทุกคนมีรุ่นและถ้าผมปิดกั้นเฉพาะรุ่นที่ไม่มีอะไรจะได้รับเพราะรุ่นใหม่จะถูกติดตั้ง (เช่นถ้าผมปิดกั้นlinux-image-3.2.0-35, linux-image-3.2.0-36ไม่ได้ถูกบล็อกและยังคงอาจจะติดตั้งด้วยdist-upgradeจากapt.)


โปรดทราบว่านี่จะไม่ทำงานใน Ubuntu 16.04 อีกต่อไป คุณต้องทำรายการบัญชีดำโดยใช้คู่มือนี้: help.ubuntu.com/lts/serverguide/automatic-updates.html
user199618

คำตอบ:


17

สิ่งที่คุณต้องใช้คือคุณสมบัติที่เรียกว่า apt-get holding

คุณสามารถทำได้ผ่านทาง Synaptic หรือ Dpkg นี่คือวิธีที่ฉันจะเก็บเคอร์เนลของฉันโดยใช้วิธีการ dpkg

ตรวจสอบชื่อภาพเคอร์เนลของคุณก่อน

dpkg -l | grep linux-image

เอาท์พุทสำหรับฉัน:

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)

จากนั้นบอก dpkg ให้เก็บ metapackage (เวอร์ชันทั่วไปโดยไม่มีหมายเลขรุ่นใด ๆ )

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

จากนั้นคุณสามารถตรวจสอบสิ่งนี้ได้ผ่าน 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)

สังเกตว่า 'สวัสดี' ที่ด้านล่าง h หมายถึงถูกพักไว้และฉันหมายถึงติดตั้งอยู่ในปัจจุบัน แพ็คเกจนี้ได้รับการติดตั้งแล้วแต่จะไม่ถูกอัพเกรด

คุณสามารถย้อนกลับผ่าน

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

และสามารถตรวจสอบอีกครั้งผ่าน 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)

แจ้งให้ทราบ 'ii', i แรกหมายถึงแพคเกจนี้ถูกตั้งค่าให้ติดตั้งและที่สอง i หมายถึงมันถูกติดตั้งในปัจจุบัน แพ็คเกจนี้ได้รับการติดตั้งแล้วและจะได้รับการอัพเกรด

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าสถานะเหล่านี้ดูman dpkgเฉพาะส่วน 'สถานะการเลือกแพคเกจ'


1
ชื่อภาพของฉันอยู่ที่นี่ ฉันต้องการแบน "linux-image-generic" หรือไม่?
Naftuli Kay

1
@TKKocheran ใช่; คุณต้องการพักไว้ที่ metapackage มากกว่ารุ่นที่ระบุ
cjh

ไม่ทำงาน - dpkg: คำเตือน: แพ็กเกจไม่อยู่ในสถานะหรือฐานข้อมูลที่มีอยู่ที่บรรทัดที่ 1: linux-image-amd64 dpkg: คำเตือน: พบแพ็คเกจที่ไม่รู้จัก นี่อาจหมายถึงฐานข้อมูลที่มีอยู่นั้นล้าสมัยและจำเป็นต้องได้รับการปรับปรุงผ่านวิธีส่วนหน้า โปรดดูคำถามที่พบบ่อย < wiki.debian.org/Teams/Dpkg/FAQ >
Arturas M
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.