sossepack: Skillnad mellan sidversioner

Från Wiki.linux.se -Linux wikipedia på Svenska.
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
Ingen redigeringssammanfattning
Rad 1: Rad 1:
sudo update-grub
#!/usr/bin/env bash
sudo grub-set-default "Advanced options for Ubuntu>Ubuntu, with Linux $(uname -r)"
 
# 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

  1. !/usr/bin/env bash
  1. Tar bort installerade Ubuntu/Mint-kärnpaket för version 7.0.
  2. 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."
  1. 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"