使用 dpkg 阻止内核更新

Naf*_*Kay 17 kernel apt

由于最近发生在我身上的一件令人讨厌的事情,我想阻止所有分发版的内核更新。(我使用的是 Ubuntu 12.04 amd64 衍生版。)

我想阻止所有更新的次版本3.2安装内核的linux-headerslinux-headers-genericlinux-image,和linux-image-extra包。我遇到的问题是这些都有一个版本,如果我阻止特定版本,则不会因为将安装新版本而获得任何好处(例如:如果我阻止linux-image-3.2.0-35linux-image-3.2.0-36则没有被阻止,并且仍然可能使用dist-upgradefrom apt.)

cjh*_*cjh 17

你需要用到的是apt-get的一个叫做hold的功能

您可以通过 Synaptic 或 Dpkg 执行此操作,以下是我使用 dpkg 方法保存内核的方法。

首先检查您的内核映像名称

dpkg -l | grep linux-image
Run Code Online (Sandbox Code Playgroud)

我的输出:

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)
Run Code Online (Sandbox Code Playgroud)

然后告诉 dpkg 保存元包(没有任何版本号的通用版本)

echo linux-image-amd64 hold | sudo dpkg --set-selections
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过 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)
Run Code Online (Sandbox Code Playgroud)

注意底部的“hi”,h 表示保持,i 表示当前安装。此软件包已安装但不会升级。

你可以通过

echo linux-image-amd64 install | sudo dpkg --set-selections
Run Code Online (Sandbox Code Playgroud)

再次可以通过检查 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)
Run Code Online (Sandbox Code Playgroud)

请注意“ii”,第一个 i 表示此软件包已设置为安装,第二个 i 表示它当前已安装。这个包安装并进行升级。

有关这些标志的更多信息,请man dpkg具体参见“包选择状态”部分。