Linux Package-/Versionsverwaltung mit Advanced Packaging Tool (apt)
Im folgenden Beitrag widme ich der Package- und Versionsverwaltung mit apt
unter Linux. Bis dato bin ich eher Windows-lastig, aber der Betrieb meines Smart Homes mit openHAB 2 unter Linux hat mich zwangsläufig etwas in die Linux Welt „geschubst“, sodass grundlegende Administrationskenntnisse erforderlich wurden. Dazu gehört es, das System aktuell zu halten und zu patchen.
Package Installation
Alles fängt natürlich mit der Installation von Packages an, um die benötigte Software auf einem Linux-System zu betreiben. Installiert werden Packages mit apt-get
und der install
Option:
apt-get install <Package-Name>
Möchte man z.B. openHAB 2 Smart Home Controller installieren, wird dies wie folgt bewerkstelligt (openHAB 2 besteht aus 2 Packages: dem Core Package und dem Addons Package):
apt-get install openhab2 apt-get install openhab2-addons
Möchte man vor der Installation das Ergebnis der Installation simulieren, lässt sich dies mit apt-get
und dem Parameter -s
realisieren:
apt-get install -s <Package-Name>
Package Upgrade
Für ein Upgrade lädt man im ersten Schritt die neuesten Infos über Packages von den Repository Servern.
apt-get update
Im zweiten Schritt werden alle Packages auf den neuesten Stand gebracht. Zusätzliche Packages, die eventuell auf Grund geänderter Abhängigkeiten erforderlich sind, werden allerdings nicht mit installiert.
apt-get upgrade
Alternativ können alle Packages auf den neuesten Stand gebracht werden, inkl. der Installation neu benötigter Packages und inkl. Deinstallation von Packages, die mit den neuen Versionen in Konflikt stehen.
apt-get dist-upgrade
Package-Version gezielt installieren
Neben der Installation eines Packages in der aktuellen Version lassen sich auch Packages auf fest definierte Versionsstände installieren. Zunächst lässt man sich mit folgendem Befehl die im Repository verfügbaren Versionen ausgeben:
apt-cache policy <Package-Name>
Für openHAB 2 sieht der Befehl und die daraus resultierende Ausgabe wie folgt aus (Stand 04.05.2020) – analog dazu natürlich auch für die Addons:
# apt-cache policy openhab2 openhab2: Installed: (none) Candidate: 2.5.4-1 Version table: *** 2.5.4-1 500 500 https://dl.bintray.com/openhab/apt-repo2 stable/main amd64 Packages 2.5.3-1 500 500 https://dl.bintray.com/openhab/apt-repo2 stable/main amd64 Packages 2.5.2-1 500 500 https://dl.bintray.com/openhab/apt-repo2 stable/main amd64 Packages 2.5.1-2 500 500 https://dl.bintray.com/openhab/apt-repo2 stable/main amd64 Packages 2.5.1-1 500 500 https://dl.bintray.com/openhab/apt-repo2 stable/main amd64 Packages 2.5.0-1 500 500 https://dl.bintray.com/openhab/apt-repo2 stable/main amd64 Packages 2.4.0-1 500 500 https://dl.bintray.com/openhab/apt-repo2 stable/main amd64 Packages 2.3.0-1 500 500 https://dl.bintray.com/openhab/apt-repo2 stable/main amd64 Packages 2.2.0-1 500 500 https://dl.bintray.com/openhab/apt-repo2 stable/main amd64 Packages 2.1.0-1 500 500 https://dl.bintray.com/openhab/apt-repo2 stable/main amd64 Packages 2.0.0-1 500 500 https://dl.bintray.com/openhab/apt-repo2 stable/main amd64 Packages
Ist bereits eine Version installiert, sieht die Ausgabe z.B. wie folgt aus:
# apt-cache policy openhab2 openhab2: Installed: 2.5.2-1 Candidate: 2.5.4-1 Version table: .... 2.5.2-1 500 500 https://dl.bintray.com/openhab/apt-repo2 stable/main amd64 Packages 100 /var/lib/dpkg/status ....
Die Installation der gewünschten Version wird dann wie folgt durchgeführt (Parameter -V
ist optional und gibt detailliertere Informationen während der Installation aus):
apt-get install <Package-Name>=<Version> -V
Für openHAB 2 und die Addons möchte ich z.B. die Version 2.5.4 installieren und führe dies wie folgt durch:
# apt-get install openhab2=2.5.4-1 -V Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: .................... .................... # apt-get install openhab2-addons=2.5.4-1 -V Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: .................... ....................
Package vom Upgrade ausschließen
Möchte man ein Package auf einem bestimmten Versionsstand halten oder nur manuell aktualisieren, lässt sich das Package vom automatischen Upgrade ausschließen.
Um die installierte Version des jeweiligen Packages auszugeben, benötigt man folgenden Befehl (ohne grep
werden alle Packages angezeigt):
dpkg -l | grep <Package-Name>
Im Falle von openHAB 2 sieht der Befehl und die Ausgabe wie folgt aus:
# dpkg -l | grep openhab2 ii openhab2 2.5.2-1 all openhab2 ii openhab2-addons 2.5.2-1 all openhab2-addons
Hat das Package die gewünschte Version, verwendet man apt-mark
mit der Option hold
, um zu verhindern, dass es beim Upgrade mit aktualisiert wird.
apt-mark hold <Package-Name>
Die openHAB 2 Packages werden wie folgt vom Update ausgenommen:
# apt-mark hold openhab2 openhab2 set on hold. # apt-mark hold openhab2-addons openhab2-addons set on hold.
Möchte man in o.g. Beispiel beide openHAB 2 Packages vom Upgrade ausnehmen, lässt sich dies auch mit folgendem Einzelbefehl umsetzen:
# apt-mark hold openhab2* openhab2 set on hold. openhab2-addons set on hold.
Package ins Upgrade einschließen
Natürlich kann die Deaktivierung auch wieder rückgängig gemacht werden und das Upgrade wieder aktiviert werden. Dazu wird apt-mark
mit der unhold
Option verwendet:
apt-mark unhold <Package-Name>
Das openHAB 2 Package wird demnach wie folgt wieder aktiviert:
# apt-mark unhold openhab2 Canceled hold on openhab2. # apt-mark unhold openhab2-addons Canceled hold on openhab2-addons.
Möchte man in unserem Beispiel für beide openHAB 2 Packages das Upgrade wieder aktivieren, lässt sich dies auch wieder mit folgendem Einzelbefehl umsetzen:
# apt-mark unhold openhab2* Canceled hold on openhab2. Canceled hold on openhab2-addons.
Package deinstallieren
Die Deinstallation von Packages wird mit apt-get
und der remove
Option durchgeführt. Der folgende Befehl deinstalliert lediglich das Package; Abhängigkeiten oder Konfigurationsdateien bleiben erhalten:
apt-get remove <Package-Name>
Um neben dem Package auch die Konfigurationen zu entfernen, wird zusätzlich der Parameter --purge
verwendet:
apt-get --purge remove <Package-Name>
Die Packages openHAB 2 und die Addons inkl. Konfiguration werden folglich wie folgt deinstalliert:
apt-get --purge remove openhab2-addons apt-get --purge remove openhab2
Quellen:
https://de.wikipedia.org/
https://wiki.ubuntuusers.de/