sossepack: Skillnad mellan sidversioner
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
||
| Rad 1: | Rad 1: | ||
sudo | #!/usr/bin/env bash | ||
sudo | |||
# 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 | |||
[[ -r /etc/os-release ]] || | |||
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" | |||
Versionen från 12 augusti 2026 kl. 05.09
- !/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"