删除除当前使用的内核包之外的所有内核包

删除除当前使用的内核包之外的所有内核包

如何自动删除我不使用的所有其他内核?

所以,这是我的情况:

  • 使用不同版本的 Ubuntu / CentOS
  • 自动更新开启 -> Linux 下载了许多新的内核版本
  • 现在我想删除所有其他内核版本,除了我当前正在使用的版本

代码:

#find out current kernel version:
uname -r

#check which versions are downloaded to computer
dpkg --get-selections | grep linux-image

#delete desired kernel
sudo apt-get purge [KERNEL]

#autoremove
sudo apt-get autoremove

一台 Linux 中很容易有超过 15 个内核,而我必须经历超过 50 个 Linux。

答案1

在 Ubuntu 上,您可以使用purge-old-kernelspurge old kernel 来安装它:

适用于 ubuntu 16.04

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F430BBA5
sudo add-apt-repository ppa:byobu/ppa
sudo apt-get update
sudo apt-get install byobu

您也可以在不添加以下内容的情况下安装它ppasudo apt-get install byobu

对于低于 16.04 的 Ubuntu 版本

sudo add-apt-repository ppa:bikeshed/ppa
sudo apt-get update
sudo apt-get install bikeshed

运行以下命令以保留最新的 2 内核:

sudo purge-old-kernels

您可以指定n要保留的内核数量:

sudo purge-old-kernels --keep n

n=1

sudo purge-old-kernels --keep 1

在centOS上安装yum-utils包:

yum install yum-utils

要保留最新的n内核,请运行:

package-cleanup --oldkernels --count=n

n=1

package-cleanup --oldkernels --count=1

答案2

对于 Centos 8 及以上版本,您可以使用以下命令:

dnf remove --oldinstallonly

这将删除所有旧版本的内核。当你想要拥有时使用仅最新的安装的内核的发行版本。

我原来的回答在:https://unix.stackexchange.com/a/628434/145515

答案3

请注意,此命令会删除主要版本 4 的所有内核映像和标头,但不会删除正在运行的内核映像和标头。

apt purge $(dpkg-query -W -f='${binary:Package}\n' 'linux-image-4*' 'linux-headers-4*' | grep -v $(uname -r))

答案4

您可以尝试以下命令。在执行 apt-get purge 之前,只需仔细检查 grep 的输出以不包含当前的内核版本

dpkg --list | grep linux-image | awk '{print $2}' | grep -v linux-image-`uname -r` | xargs apt-get purge

相关内容