Mageia에서 DNF를 사용하여 오래된 커널을 쉽게 제거하는 방법은 무엇입니까?

Mageia에서 DNF를 사용하여 오래된 커널을 쉽게 제거하는 방법은 무엇입니까?

installonly_limit 3마제이아에서는 in etc/yum/yum.conf과 in이 etc/dnf/dnf.conf아무런 효과가 없는 것 같아서, 실행해도 실행 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제거할 이전 설치 전용 패키지가 없다고 알려줍니다.

답변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

이는 매우 구체적인 솔루션이며 다른 배포판에서는 작동하지 않습니다.

관련 정보