如何跳过内核更新?
我在VirtulBox上运行Ubuntu 12.04.1 LTS i686。 每次检查更新时,都会有一个新的Linux内核。 如果我安装新内核,我必须再次安装Virtulbox Guest Additions并重新启动服务器。 我不想每周都这样做。 我知道我可以从更新管理器手动取消选中内核包,但有没有办法自动跳过内核更新? 我在这里找到了答案,但它适用于Ubuntu 10.谢谢。
APT(高级打包工具)是Ubuntu用于管理系统上安装的所有软件的系统。 它允许您将软件包“固定”到某个版本,以便在Update Manager运行时不会更新它。
要固定内核包,首先必须确定内核的版本。 一种方法是在系统>管理中打开Synaptic包管理器。
在快速搜索文本字段中键入“linux-generic”,然后按Enter键。
记下“已安装版本”列中列出的编号。 我们将在下一步中使用它。
接下来,我们需要编辑文件/ etc / apt / preferences。 通过按Alt + F2打开它以显示“运行应用程序”窗口并输入:
gksudo gedit /etc/apt/preferences
这将打开一个gedit窗口。 很可能窗口将是空白的,除非你之前玩过APT。
在窗口中,键入以下内容,将版本号替换为您在Synaptic Package Manager中找到的版本号。
Package: linux-generic linux-headers-generic linux-image-generic linux-restricted-modules-generic Pin: version Pin-Priority: 1001
保存文件并关闭gedit。 如果您打开Update Manager,您应该会看到Linux内核更新现在已隐藏!
资源
使用APT / DPKG阻止包裹
请记住上面的内核包名。
打开终端并运行:
sudo -s
然后点击进入 。
输入sudo的密码:
echo kernel_package_name hold | dpkg --set-selections
将kernel_package_name
替换为要固定的内核的名称。
现在运行:
sudo apt-get update && sudo apt-get upgrade
要从Apt / Dpkg中删除引脚:
打开终端
sudo -s echo kernel_package install | dpkg --set-selections
将kernel_package替换为要固定的包。
现在运行:
sudo apt-get update && sudo apt-get upgrade
资源
你要做的就是钉扎。 我上面给你的消息来源,有关于你必须做什么来完成手头任务的要点。
一行是:
echo $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}') hold | dpkg --set-selections
这会将内核的映像状态从安装设置为保持 ,从而阻止更新。
Christoph的单线程不考虑额外的包(例如linux-image-extra-3.13.0-45-generic)。 而是使用这个:
for $ in $(dpkg -l“* $(uname -r)*”| grep image | awk'{print $ 2}'); 回声$我持有| dpkg --set-selections; DONE
关于superlexx的建议:该行将错过“headers”包:
dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}' linux-image-3.13.0-48-generic linux-image-extra-3.13.0-48-generic
那么如何简单地使用以下内容:
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
这清除了启用内核更新的元内核包:
sudo apt purge $(apt-cache rdepends -i --installed linux-{headers,image}-$(uname -r)|awk '!/[0-9]/ && /^[ ]/{print $1}')
(如果您刚刚升级了内核,则必须首先使用新内核重新启动,或者找到最新的内核版本并在上面使用它而不是“$(uname -r)”。)
建议安装内核更新,因为它们主要是安全更新。
在Ubuntu 16.04.1上,以下代码有效
for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i hold | sudo dpkg --set-selections; done
这是对Superlexx代码的改进,添加了sudo
dpkg -l | grep linux-image
你会找到:
你好 linux-image-4.4.0-34-generic …
你好 linux-image-extra-4.4.0-34-generic …
请注意,标签现在是hi
,而不是ii
删除pin
for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i install | sudo dpkg --set-selections; done
更短版本:(将“hold”替换为“install”以删除引脚)
dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2,"hold"}' | sudo dpkg --set-selections
要查看所有内核映像和标头的状态,请运行:
dpkg --get-selections | grep "linux-"