Chặn cập nhật kernel với dpkg


16

Tôi muốn chặn tất cả các bản cập nhật kernel được phân phối do một điều khó chịu gần đây đã xảy ra với tôi. (Tôi đang sử dụng công cụ phái sinh Ubuntu 12.04 amd64.)

Tôi muốn chặn tất cả các bản cập nhật kernel cài đặt của phiên bản nhỏ 3.2 đến linux-headers, linux-headers-generic, linux-image, và linux-image-extragói. Vấn đề tôi gặp phải là tất cả đều có phiên bản và nếu tôi chặn một phiên bản cụ thể, sẽ không có gì vì phiên bản mới sẽ được cài đặt (ví dụ: nếu tôi chặn linux-image-3.2.0-35, linux-image-3.2.0-36không bị chặn và vẫn có thể được cài đặt dist-upgradetừ apt.)


Lưu ý rằng điều này không còn hoạt động trong Ubuntu 16.04. Bạn cần phải gói danh sách đen sử dụng hướng dẫn này: help.ubuntu.com/lts/serverguide/automatic-updates.html
user199618

Câu trả lời:


17

Những gì bạn cần sử dụng là một tính năng của apt-get được gọi là giữ

Bạn có thể thực hiện việc này thông qua Synaptic hoặc Dpkg, Dưới đây là cách tôi sẽ giữ kernel của mình bằng phương thức dpkg.

Đầu tiên hãy kiểm tra tên ảnh kernel của bạn

dpkg -l | grep linux-image

đầu ra cho tôi:

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)

sau đó bảo dpkg giữ siêu dữ liệu (phiên bản chung không có số phiên bản)

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

Sau đó, bạn có thể kiểm tra điều này làm việc thông qua 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)

Lưu ý 'hi' ở phía dưới, h có nghĩa là được giữ và tôi có nghĩa là hiện đang được cài đặt. Gói này được cài đặt nhưng sẽ không được nâng cấp.

Bạn có thể đảo ngược điều này thông qua

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

và một lần nữa có thể kiểm tra thông qua 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)

Lưu ý 'ii', i đầu tiên có nghĩa là gói này được đặt để cài đặt và i thứ hai có nghĩa là nó hiện đang được cài đặt. Gói này được cài đặt và sẽ được nâng cấp.

Để biết thêm thông tin về các cờ này, hãy xem man dpkgcụ thể các phần 'trạng thái lựa chọn gói'.


1
Tên hình ảnh của tôi ở đây . Tôi có muốn cấm "linux-image-generic" không?
Naftuli Kay

1
@TKKocheran có; bạn muốn giữ một siêu dữ liệu, thay vì một phiên bản cụ thể.
cjh

Không hoạt động - dpkg: warning: gói không ở trạng thái cũng như cơ sở dữ liệu có sẵn ở dòng 1: linux-image-amd64 dpkg: warning: tìm thấy các gói không xác định; điều này có thể có nghĩa là cơ sở dữ liệu có sẵn đã lỗi thời và cần được cập nhật thông qua phương thức frontend; vui lòng xem Câu hỏi thường gặp < wiki.debian.org/Teams/Dpkg/FAQ >
Arturas M
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.