Paketverwaltung mit apt

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 Vorraussetzungen für ein sinnvolles Umsetzen der Anleitung erfüllt sein.

Voraussetzungen

Es werden grundlegende Kenntnisse im Umgang mit Ubuntu und der Kommandozeile vorrausgesetzt.

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 zieht
  • von 990 bis 999 – Version wird installiert, auch wenn sie nicht zum Release gehört, es sei denn ein aktuelleres Pakete ist bereits installiert
  • von 500 bis 989 – Version wird installiert, es sei denn, es gibt eine Version, die zum Release gehört oder eine aktuellere Version ist bereits installiert
  • von 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 aktueller
  • von 1 bis 99 – Version wird nur dann installiert, wenn es keine bereits installierte gibt
  • negativer 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