Diese Seite befindet sich noch im Aufbau und wird von Zeit zu Zeit erweitert werden!
Um Softwarepakete auf Debian-basierten Systemen (wie zB Ubuntu) zu verwalten kommt in der Regel das Paketverwaltungsystem rund um APT (Advanced Packaging Tool) zum Einsatz. Dieses sehr mächtige System bietet eine Reihe von Möglichkeiten Pakete zu installieren und aktuell zu halten.
Diese Anleitung beschreibt das vom RRZE empfohlene Vorgehen im Umgang mit der APT Paketverwaltung und gibt Lösungsvorschläge für einige häufig auftretende Szenarien.
Vorbereitung
Bitte prüfen Sie die vorbereitenden Schritte, bevor Sie versuchen einzelne Teile der Anleitung durchzuführen.
In der Regel müssen diese Voraussetzungen für ein sinnvolles Umsetzen der Anleitung erfüllt sein.
Voraussetzungen
Es werden grundlegende Kenntnisse im Umgang mit Ubuntu und der Kommandozeile vorausgesetzt.
Die Verwendung der erweiterten Funktionen wird nur erfahrenen Anwendern empfohlen.
Pakete
Folgender Pakete für Ubuntu 16.04/18.04 müssen installiert werden:
bash$ sudo apt-get install apt
Basisfunktionen
Hier soll auf die wichtigsten Kommandos und Abläufe im täglichen Umgang mit der APT Paketverwaltung eingegangen werden.
Weitere Informationen finden Sie auch auf der Ubuntu APT Übersichtsseite.
Paketquellen einrichten und aktualisieren
Die Konfiguration der APT Paketquellen findet sich unter /etc/apt/sources.list
bzw. /etc/apt/sources.list.d/
.
Sollten hier Erweiterungen um neue Paketquellen vorgenommen werden, empfiehlt es sich eine neue Datei mit thematisch passendem Namen und der Endung .list
unter /etc/apt/sources.list.d/
anzulegen und die entsprechenden Repositories dort zu erfassen.
Die Datei /etc/apt/sources.list
wird eher für die System-/Basiskonfiguration der Ubuntu Paketquellen verwendet und sollte nicht für externe Repositories „missbraucht“ werden.
Sobald Änderungen an den Paketquellen vorgenommen wurden oder die letzte Aktualisierung schon eine Weile her ist sollten die Paketinformationen aktualisiert werden bevor neue Pakete installiert oder Aktualisierungen eingespielt werden.
Die Aktualisierung der Paketquellen erfolgt mittels
bash$ sudo apt update
Pakete finden/installieren/entfernen
System aktuell halten
Einzelne Pakete von der Aktualisierung ausnehmen
Regelmäßige Aufräumarbeiten
Erweiterte Funktionen
Die hier beschriebenen Funktionen sollten nur von erfahrenen Anwendern verwendet werden, die wissen was sie tun.
Paketversion festziehen / Updates verhindern
Um Updates von Paketen zu verhindern können diese auf hold
gesetzt werden:
bash$ sudo apt-mark hold firefox
Oder zum erneuten freigeben für Updates:
bash$ sudo apt-mark unhold firefox
Siehe auch https://wiki.ubuntuusers.de/apt/apt-Kommandos/ für weitere Informationen.
Priorisierung von Paketen und Paketquellen mit Apt-Pinning
Ein wesentlich mächtigeres Werkzeug um zu steuern wie Pakete installiert werden, ist das Apt-Pinning.
Hier kann in einer oder mehreren Konfigurationsdateien unter /etc/apt/preferences.d/
das Verhalten von APT beeinflusst werden.
Falsche Einstellungen an dieser Stelle können weitreichende Folgen für das System haben. Prüfen Sie deshalb nach jeder Änderung, ob das gewünschte Verhalten erzielt wurde, oder nicht.
TODO
Siehe auch https://wiki.ubuntuusers.de/Apt-Pinning/ für weitere Informationen.
Werte für Pin-Priority
Die Werte für Pin-Priority
müssen positive oder negative ganze Zahlen sein. Sie werden wie folgt interpretiert:
größer 999
: Version wird in jedem Fall installiert, auch wenn das einen Downgrade des Paketes nach sich ziehtvon 990 bis 999
– Version wird installiert, auch wenn sie nicht zum Release gehört, es sei denn ein aktuelleres Pakete ist bereits installiertvon 500 bis 989
– Version wird installiert, es sei denn, es gibt eine Version, die zum Release gehört oder eine aktuellere Version ist bereits installiertvon 100 bis 499
– Version wird installiert, es sei denn, es gibt eine aktuellere die nicht zum Release gehört oder die bereits installierte Version ist aktuellervon 1 bis 99
– Version wird nur dann installiert, wenn es keine bereits installierte gibtnegativer Wert
– Version wird nicht installiert
Das Paket mit der höchsten Punktzahl wird immer bevorzugt.
Beispiel: Pakete aus externen PPAs beschränken (inkl. erzwungenem Downgrade)
Diese Beispiel schlägt eine Möglichkeit vor, wie der Einfluss von externen Paketquellen eingeschränkt werden kann.
Besonders ist hier die Nutzung der Pin-Priority > 1000, um ebenfalls ein Downgrade bereits eingeschleppter Fremdpakete auf die offiziellen Ubuntu Versionen möglich zu machen.
bash$ sudo vi /etc/apt/preferences.d/LP-PPA # Manually deployed packages in the RRZE RepRepo instance Package: * Pin: release o=RRZE Reprepro Pin-Priority: 2000 # Saltstack PPA Package: * Pin: release o=SaltStack Pin-Priority: 2000 # The local source (e.g. manually installed packages or packages that are not in any repo anymore) Package: * Pin: release a=now Pin-Priority: 1900 # Ondrej Apache2 PPA Package: * Pin: release o=LP-PPA-ondrej-apache2 Pin-Priority: 1500 # Ondrej PHP PPA Package: * Pin: release o=LP-PPA-ondrej-php Pin-Priority: 1500 Package: openssl Pin: release o=LP-PPA-* Pin-Priority: -1 # Official "Ubuntu" repos Package: * Pin: release l=Ubuntu Pin-Priority: 1000