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:
= Skript: Ta bort Linux-kärna 7.0 =
== Beskrivning ==
Skriptet är avsett för Ubuntu och Linux Mint. Det kontrollerar först vilken Linux-kärna datorn använder.
Om datorn fortfarande kör en kärna från version 7.0 avbryts skriptet. Datorn måste då startas om med en annan kärna innan version 7.0 kan tas bort.
Skriptet söker efter installerade paket vars namn börjar med <code>linux-</code> och innehåller kärnversionen 7.0. Innan paketen avinstalleras genomförs en provkörning med APT.
== Funktioner ==
* Kontrollerar att skriptet körs som root.
* Kontrollerar att operativsystemet är Ubuntu eller Linux Mint.
* Kontrollerar vilken kärna datorn använder.
* Avbryter om den aktiva kärnan är version 7.0.
* Söker efter installerade kärnpaket för version 7.0.
* Visar vilka paket som kommer att tas bort.
* Genomför en provkörning med APT.
* Kräver att användaren skriver <code>JA</code>.
* Uppdaterar GRUB efter borttagningen.
* Har stöd för provkörning och automatisk bekräftelse.
== Skript ==
Spara följande som <code>ta-bort-kernel-7.0.sh</code>:
<pre>
#!/usr/bin/env bash
#!/usr/bin/env bash


Rad 44: Rad 72:
             ;;
             ;;
     esac
     esac
     shift
     shift
done
done
Rad 58: Rad 87:
     die "/etc/os-release kunde inte läsas."
     die "/etc/os-release kunde inte läsas."


# shellcheck disable=SC1091
source /etc/os-release
source /etc/os-release


Rad 69: Rad 97:


running_kernel="$(uname -r)"
running_kernel="$(uname -r)"
echo "Körande kärna: $running_kernel"
echo "Körande kärna: $running_kernel"


Rad 124: Rad 153:


     read -r -p "Skriv JA för att ta bort paketen: " answer
     read -r -p "Skriv JA för att ta bort paketen: " answer
     [[ "$answer" == "JA" ]] ||
     [[ "$answer" == "JA" ]] ||
         die "Avbrutet av användaren."
         die "Avbrutet av användaren."
Rad 143: Rad 173:
echo "Klart. Datorn kör fortfarande kärna $running_kernel."
echo "Klart. Datorn kör fortfarande kärna $running_kernel."
echo "Kontrollera efter nästa omstart med: uname -r"
echo "Kontrollera efter nästa omstart med: uname -r"
</pre>
== Installation ==
Gör skriptet körbart:
<pre>
chmod +x ta-bort-kernel-7.0.sh
</pre>
== Provkörning ==
Kontrollera först vad som skulle tas bort:
<pre>
sudo ./ta-bort-kernel-7.0.sh --dry-run
</pre>
Inga paket avinstalleras vid provkörningen.
== Genomför borttagningen ==
<pre>
sudo ./ta-bort-kernel-7.0.sh
</pre>
Skriv <code>JA</code> när skriptet frågar om paketen ska tas bort.
== Automatisk bekräftelse ==
För att genomföra borttagningen utan en fråga:
<pre>
sudo ./ta-bort-kernel-7.0.sh --yes
</pre>
== Hjälpskärm ==
<pre>
./ta-bort-kernel-7.0.sh --help
</pre>
== Kontroll efter omstart ==
<pre>
uname -r
</pre>
Resultatet ska inte börja med <code>7.0</code>.

Versionen från 12 augusti 2026 kl. 05.13

Skript: Ta bort Linux-kärna 7.0

Beskrivning

Skriptet är avsett för Ubuntu och Linux Mint. Det kontrollerar först vilken Linux-kärna datorn använder.

Om datorn fortfarande kör en kärna från version 7.0 avbryts skriptet. Datorn måste då startas om med en annan kärna innan version 7.0 kan tas bort.

Skriptet söker efter installerade paket vars namn börjar med linux- och innehåller kärnversionen 7.0. Innan paketen avinstalleras genomförs en provkörning med APT.

Funktioner

  • Kontrollerar att skriptet körs som root.
  • Kontrollerar att operativsystemet är Ubuntu eller Linux Mint.
  • Kontrollerar vilken kärna datorn använder.
  • Avbryter om den aktiva kärnan är version 7.0.
  • Söker efter installerade kärnpaket för version 7.0.
  • Visar vilka paket som kommer att tas bort.
  • Genomför en provkörning med APT.
  • Kräver att användaren skriver JA.
  • Uppdaterar GRUB efter borttagningen.
  • Har stöd för provkörning och automatisk bekräftelse.

Skript

Spara följande som ta-bort-kernel-7.0.sh:

#!/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

[[ -r /etc/os-release ]] ||
    die "/etc/os-release kunde inte läsas."

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"

Installation

Gör skriptet körbart:

chmod +x ta-bort-kernel-7.0.sh

Provkörning

Kontrollera först vad som skulle tas bort:

sudo ./ta-bort-kernel-7.0.sh --dry-run

Inga paket avinstalleras vid provkörningen.

Genomför borttagningen

sudo ./ta-bort-kernel-7.0.sh

Skriv JA när skriptet frågar om paketen ska tas bort.

Automatisk bekräftelse

För att genomföra borttagningen utan en fråga:

sudo ./ta-bort-kernel-7.0.sh --yes

Hjälpskärm

./ta-bort-kernel-7.0.sh --help

Kontroll efter omstart

uname -r

Resultatet ska inte börja med 7.0.