sossepack
- !/usr/bin/env bash
- Tar bort installerade Ubuntu/Mint-kärnpaket för version 7.0.
- Skriptet avbryter om den körande kärnan är en 7.0-kärna.
set -Eeuo pipefail
readonly TARGET_VERSION="7.0" assume_yes=0 dry_run=0
usage() {
cat <<'EOF'
Användning:
sudo ./ta-bort-kernel-7.0.sh [--yes] [--dry-run]
Val:
-y, --yes Bekräfta borttagningen automatiskt. -n, --dry-run Visa vad som skulle tas bort utan att ändra något. -h, --help Visa denna hjälptext.
EOF }
die() {
echo "FEL: $*" >&2 exit 1
}
while (($# > 0)); do
case "$1" in
-y|--yes)
assume_yes=1
;;
-n|--dry-run)
dry_run=1
;;
-h|--help)
usage
exit 0
;;
*)
usage >&2
die "Okänt argument: $1"
;;
esac
shift
done
((EUID == 0)) ||
die "Skriptet måste köras som root, exempelvis med sudo."
for command_name in uname dpkg-query apt-get sort; do
command -v "$command_name" >/dev/null 2>&1 ||
die "Kommandot '$command_name' saknas."
done
die "/etc/os-release kunde inte läsas."
- shellcheck disable=SC1091
source /etc/os-release
distribution="${ID:-okänd} ${ID_LIKE:-}"
if [[ "$distribution" != *ubuntu* &&
"$distribution" != *linuxmint* ]]; then die "Skriptet är avsett för Ubuntu eller Linux Mint."
fi
running_kernel="$(uname -r)" echo "Körande kärna: $running_kernel"
if [[ "$running_kernel" =~ ^7[.]0([.-]|$) ]]; then
die "Datorn kör fortfarande kärna $running_kernel. Starta om med en annan kärna först."
fi
if ! -e "/boot/vmlinuz-$running_kernel" ; then
die "Filen /boot/vmlinuz-$running_kernel saknas. Ingen borttagning gjordes."
fi
packages=()
while IFS=$'\t' read -r package_name package_status; do
"$package_status" == "installed" || continue
base_name="${package_name%%:*}"
if [[ "$base_name" == linux-* &&
"$base_name" =~ (^|-)7[.]0([.-]|$) ]]; then
packages+=("$package_name")
fi
done < <(
dpkg-query -W \
-f='${binary:Package}\t${db:Status-Status}\n' \
2>/dev/null
)
if ((${#packages[@]} == 0)); then
echo "Inga installerade kärnpaket för version 7.0 hittades." exit 0
fi
mapfile -t packages < <(
printf '%s\n' "${packages[@]}" | sort -u
)
echo echo "Följande ${#packages[@]} paket hittades:" printf ' %s\n' "${packages[@]}" echo
echo "APT:s beräkning av hela borttagningen:" apt-get --simulate purge "${packages[@]}" echo
if ((dry_run)); then
echo "Provkörningen är klar. Inga paket togs bort." exit 0
fi
if ((!assume_yes)); then
-t 0 || die "Ingen terminal hittades. Kör med --yes för automatisk bekräftelse."
read -r -p "Skriv JA för att ta bort paketen: " answer "$answer" == "JA" || die "Avbrutet av användaren."
fi
echo "Tar bort kärnpaket för version 7.0 ..."
DEBIAN_FRONTEND=noninteractive \
apt-get purge -y -- "${packages[@]}"
if command -v update-grub >/dev/null 2>&1; then
echo "Uppdaterar GRUB-menyn ..." update-grub
else
echo "VARNING: update-grub hittades inte." >&2
fi
echo echo "Klart. Datorn kör fortfarande kärna $running_kernel." echo "Kontrollera efter nästa omstart med: uname -r"