由于最近发生在我身上的一件令人讨厌的事情,我想阻止所有分发版的内核更新。(我使用的是 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
from 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
具体参见“包选择状态”部分。