如何跳过内核更新?

gar*_*ncn 25 updates kernel

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

Lnx*_*lck 18

APT(高级打包工具)是 Ubuntu 用来管理系统上安装的所有软件的系统。它允许您将软件包“固定”到某个版本,这样当您运行更新管理器时它不会被更新。

要固定您的内核包,首先您必须确定您的内核是什么版本。一种方法是在系统 > 管理中打开 Synaptic Package Manager。

在此处输入图片说明

在快速搜索文本字段中输入“linux-generic”并按回车键。

在此处输入图片说明

记下“已安装版本”列中列出的数字。我们将在下一步中使用它。

接下来,我们需要编辑文件 /etc/apt/preferences.conf 。按 Alt+F2 打开它以调出运行应用程序窗口并输入:

gksudo gedit /etc/apt/preferences
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这将打开一个 gedit 窗口。窗口很可能是空白的,除非您以前玩过 APT。

在窗口中,输入以下内容,用您在 Synaptic Package Manager 中找到的版本号替换版本号。

Package: linux-generic linux-headers-generic linux-image-generic linux-restricted-modules-generic
Pin: version <insert version here>
Pin-Priority: 1001
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

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

在此处输入图片说明

来源

使用 APT/DPKG 阻塞包

记住上面内核的包名。

打开终端并运行:

sudo -s
Run Code Online (Sandbox Code Playgroud)

并击中enter

输入您的 sudo 密码:

echo kernel_package_name hold | dpkg --set-selections
Run Code Online (Sandbox Code Playgroud)

替换kernel_package_name为您要固定的内核的名称。

现在运行:

sudo apt-get update && sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

从 Apt/Dpkg 移除 pi​​n:

打开终端

sudo -s
echo kernel_package install | dpkg --set-selections
Run Code Online (Sandbox Code Playgroud)

将 kernel_package 替换为您要固定的包。

现在运行:

sudo apt-get update &&  sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)

来源

您尝试做的事情称为固定。我在上面提供给您的资源提供了完成手头任务所需要做的事情的要点。

  • 是的,默认情况下不再安装 Synaptic。 (2认同)
  • @LnxSlck,我安装了 Synaptic 并按照您的指示进行操作。有用。谢谢。 (2认同)

小智 16

在一行中是:

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

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


小智 8

Christoph 的 one-liner 没有考虑额外的包(例如 linux-image-extra-3.13.0-45-generic)。而是使用这个:

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); 做回声 $i 持有 | dpkg --set-selections; 完毕