Aktualisierung, Reparatur und Bereinigung von Debian, Ubuntu und Mint

Da ich gern mein Debian basierendes System selbst aktualisieren wollte, hatte ich mir dieses Bash-Script geschrieben. Zudem lösche ich damit alte Kernel die ich nicht mehr nutze und repariere missglückte Aktualisierungen. Also hier mein zweites Script.

Das Script „3up.sh“

#!/bin/bash

# Author:	Frank Rosenberger <https://ro-kom.de>
# License:	GPL3
# Date:		2017-01-31
# Scriptname:	3up.sh
# Version:	0.3
# Description:	complexity update, upgrade and clearing

if apt list --upgradable && apt update && apt upgrade && apt full-upgrade && dpkg --configure -a && apt install -f && apt clean && apt autoremove && apt autoremove --purge
then
	echo $(basename './u' .sh) "successful"
else
	echo $(basename './u' .sh) "error!"
	exit [n]
fi

echo "Script end"

: <<commend

Eingabe im Terminal:
sudo sh ~/3up.sh
Multiple Ausgaben im Terminal.

commend

Das Script habe ich so benannt, da die ersten drei Kommandos mit der Vorsilbe „up“ beginnen. Und nun auch ordentlich mit Dateinamenserweiterung, Extension, „.sh“ für „Shell“, beziehungsweise wie in diesen Fall „Bash“.

Erläuterungen

Diesmal habe ich nur den Kommentar auf deutsch geschrieben. Denn ich möchte entsprechend der GPL, dass dieses Script alle Menschen nutzen können. Der Aufruf des Script muss mit erweiterten Rechten geschehen, daher „su“ oder „sudo“ nutzen, je nachdem was Sie eingerichtet haben.

Wer das Script beim Abarbeiten der Befehle besser beobachten möchte, kann die Option „-x“ von „sh“ dazunehmen.

sudo sh -x ~/3up.sh

Bei möglichen Fehlermeldungen, einfach das Script nochmal starten, dann sind die Fehler beim ersten Aufruf von den nachfolgenden Befehlen behoben oder werden beim zweiten Aufruf von den vorherigen Kommandos im Script korrigiert.

Beispielsweise wurde mir eines Tages beim ersten Aufruf des Scripts „zurückgehaltene Pakete“ gemeldet und beim sofortigen zweiten Aufruf, kam diese Fehlermeldung nicht mehr.

Detailliert

Hier die nun die einzelnen Befehle erklärt. Einiges sieht eventuell überflüssig aus, aber diese Redundanz hat mit geholfen manchen Fehler der Aktualisierung zu Umschiffen, siehe die beiden ersten und beiden letzten Befehle.

## Das "Advanced Packaging Tool", apt,  sucht nach aktuellen Versionen der installierten Pakete.
# apt list --upgradable

## Alle Einträge der sources.list einlesen und die Listen aktualisieren.
# apt update

## Die vom vorherigen Befehl aktualisierten Paketlisten nutzen um neuere Versionen herunterzuladen UND zu installieren UND zu starten, wenn es ohne Neustart des Betriebssystems möglich ist.
# apt upgrade

## Hiermit können auch obsolete Pakete entfernt werden. Vorsicht bei Fremdquellen, diese sind abhängig vom Eigensinn der Entwickler und damit unberechenbar.
# apt full-upgrade

## Mit der Option -a kann der "Debian Package Manager" alle entpackten aber nicht konfigurierten Pakete konfigurieren.
# dpkg --configure -a

## Hiermit werden fehlende Abhängigkeiten aufgelöst.
# apt install -f

## Der Cache für Installationsdateien wird geleert. Der Befehl "autoclean" entfernt nur die Installationsdateien, die nicht mehr in den Repositorien zur Verfügung stehen.
# apt clean

## Ungenützte Abhängigkeiten werden entfernt.
# apt autoremove

## Ungenützte Abhängigkeiten werden entfernt, einschließlich die  damit verbundenen systemweiten Konfigurationen.
# apt autoremove --purge

## Nach den Befehlen erhalten Sie eine Statusmeldung, ob das Script erfolgreich alles abarbeiten konnte oder Fehler auftraten.
# then
	echo $(basename './u' .sh) "successful"
else
	echo $(basename './u' .sh) "error!"
	exit [n]

## Und damit damit Sie sicher sind, dass das Script abgeschlossen wurde, noch eine Meldung.
# echo "Script end"

Nun hoffe ich auf Feedback, weil dieses Script bestimmt zu verbessern ist.