sossepack: Skillnad mellan sidversioner

Från Wiki.linux.se -Linux wikipedia på Svenska.
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
(Ersatte sidans innehåll med "Allmänkladd sida.....")
Märke: Ersättning
 
(En mellanliggande sidversion av samma användare visas inte)
Rad 1: Rad 1:
#!/usr/bin/env bash
Allmänkladd sida.....
 
# 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"

Nuvarande version från 12 augusti 2026 kl. 06.02

Allmänkladd sida.....