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
 
Rad 1: Rad 1:
= Skript: Ta bort Linux-kärna 7.0 =
Allmänkladd sida.....
 
== 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
 
# 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"
</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>.

Nuvarande version från 12 augusti 2026 kl. 06.02

Allmänkladd sida.....