由于installonly_limit 3
inetc/yum/yum.conf
和 inetc/dnf/dnf.conf
在 Mageia 下似乎没有任何效果,即使通过运行dnf autoremove
,我尝试运行dnf remove $(dnf repoquery --installonly --latest-limit=-2)
,但由于抱怨无法删除而失败basesystem
。实际上,dnf repoquery --installonly --latest-limit=-2
似乎返回所有内核,包括最新内核,无论--latest-limit
.我缺少什么?我发现这个命令行本文档,它可以在其他一些支持 DNF 的发行版下运行,但不能在 Mageia 下运行。
dnf repoquery --installonly
给我:
kernel-desktop-5.15.11-3.mga8-0:1-1.mga8.x86_64
kernel-desktop-5.15.15-1.mga8-0:1-1.mga8.x86_64
kernel-desktop-5.15.4-1.mga8-0:1-1.mga8.x86_64
kernel-desktop-5.15.6-2.mga8-0:1-1.mga8.x86_64
dnf remove --oldinstallonly --setopt installonly_limit=1
告诉我没有旧的 installonly 软件包需要删除。
答案1
由于我在使用RPM一段时间后才使用DNF,因此基于DNF的解决方案不起作用。
这是我使用 RPM 的解决方案,它仅保留最近安装的内核和当前正在使用的内核:
#!/bin/bash
# script written by Julien Gouesse, under General Public License version 2
if [ ! -n "$BASH" ]
then echo "Please run $0 with bash"
exit 1
fi
if [ "$EUID" -ne 0 ]
then echo "Please run $0 as root"
exit 2
fi
kernelType=$(uname -r | cut -f 2 -d "-")
kernelReleaseNumber=$(uname -r | cut -f 1 -d "-")
kernelPatchLevelAndDistro=$(uname -r | cut -f 3 -d "-")
currentlyLoadedKernelPackagePrefix="kernel-$kernelType-$kernelReleaseNumber-$kernelPatchLevelAndDistro"
latestKernelPackagePrefix="kernel-$kernelType-latest-"
mostRecentlyInstalledKernelVirtualPackagePrefix=$(rpm -qa|grep $latestKernelPackagePrefix)
mostRecentlyInstalledKernelPackagePrefix=${mostRecentlyInstalledKernelVirtualPackagePrefix/-latest/}
packagesToDeinstall=""
for i in $(rpm -qa|grep kernel-desktop-)
do
if [[ "$i" != *"$currentlyLoadedKernelPackagePrefix"* ]] && [[ "$i" != *"$mostRecentlyInstalledKernelVirtualPackagePrefix"* ]] && [[ "$i" != *"$mostRecentlyInstalledKernelPackagePrefix"* ]]
then
packagesToDeinstall+=" $i"
fi
done
if [ "$packagesToDeinstall" == "" ]
then
echo "No kernel to deinstall"
else
urpme $packagesToDeinstall
fi
请记住,这是一个非常具体的解决方案,它不适用于其他发行版。