当前位置: 首页>>技术教程>>正文


如何跳过内核更新?

,

问题描述

我在VirtulBox上运行Ubuntu 12.04.1 LTS i686。每次我检查更新时,都会有一个新的Linux内核。如果安装新内核,则必须再次安装Virtulbox Guest Additions,然后重新启动服务器。我不想每周这样做。我知道我可以从更新管理器中手动取消选中内核软件包,但是有没有办法自动跳过内核更新?我在这里找到了答案,但这是针对Ubuntu 10的。谢谢。

最佳思路

APT(高级打包工具)是Ubuntu用来管理系统上安装的所有软件的系统。它允许您将软件包“pin”升级到特定版本,以便在运行更新管理器时不会对其进行更新。

要固定内核软件包,首先必须确定内核的版本。一种方法是在“系统>”中打开Synaptic软件包管理器。行政。

在快速搜索文本字段中输入“linux-generic”,然后按Enter。

记下“Installed Version”列中列出的数字。我们将在下一步中使用它。

接下来,我们需要编辑文件/etc /apt /preferences。通过按Alt + F2打开“运行应用程序”窗口并输入以下内容来打开它:

gksudo gedit /etc/apt/preferences

这将打开一个gedit窗口。除非您之前曾使用过APT,否则该窗口很可能将是空白的。

在窗口中,键入以下内容,将版本号替换为您在Synaptic软件包管理器中找到的版本号。

Package: linux-generic linux-headers-generic linux-image-generic linux-restricted-modules-generic
Pin: version <insert version here>
Pin-Priority: 1001

保存文件并关闭gedit。如果打开更新管理器,您应该看到Linux内核更新现在已隐藏!

Source

使用APT /DPKG阻止程序包

从上面记住内核的软件包名称。

打开一个终端并运行:

sudo -s

然后点击enter

输入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

Source

您尝试做的事情称为固定。我上面提供给您的资源具有完成手头任务必须做的基本工作。

次佳思路

一行是:

echo $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}') hold | dpkg --set-selections

这会将内核的映像状态从安装设置为保持,因此将阻止更新。

第三种思路

Christoph的one-liner并未考虑多余的包装(例如linux-image-extra-3.13.0-45通用)。宁可使用这个:

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i hold | 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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10796.html,未经允许,请勿转载。