Installation einer bestimmten Version mit apt-get auf einem Ubuntu-/Debian-System

Linux 3 Min. Lesezeit

Unter Ubuntu und Debian installiert „apt-get install“ (bzw. das neuere „apt install“) standardmäßig die aktuellste in den Repositories verfügbare Version. Dies ist in den meisten Fällen richtig, da die neueste Version die Sicherheitspatches enthält. Manchmal ist jedoch eine bestimmte Version erforderlich: Eine Anwendung ist nur mit einer bestimmten Version kompatibel, ein Update hat einen Fehler verursacht, sodass ein Rollback auf die vorherige Version erforderlich ist, oder auf mehreren Servern muss dieselbe Version ausgeführt werden.

Für die folgenden Befehle sind root- oder sudo-Rechte erforderlich; sie können daher auf Ihrem eigenen KVM-VPS oder dedizierten Server verwendet werden.

1. Sehen Sie nach, welche Versionen verfügbar sind

Aktualisieren Sie die Paketliste und rufen Sie anschließend die Versionen der Pakete ab:

sudo apt-get update
apt-cache policy nginx

In der Ausgabe zeigt die Zeile „Installed“ die installierte Version an, die Zeile „Candidate“ die standardmäßig installierte Version, und darunter werden alle in den Repositories verfügbaren Versionen aufgeführt. Auf einem Debian-13-Testrechner beim Paket „bind9-host“ (Bestandteil der Befehle „dig“ und „host“):

bind9-host:
  Installed: 1:9.20.30-1~deb13u1
  Candidate: 1:9.20.30-1~deb13u1
  Version table:
 *** 1:9.20.30-1~deb13u1 500
        500 mirror+file:/etc/apt/mirrors/debian-security.list trixie-security/main arm64 Packages
        100 /var/lib/dpkg/status
     1:9.20.26-1~deb13u1 500
        500 mirror+file:/etc/apt/mirrors/debian.list trixie/main arm64 Packages

Die installierte Version stammt aus dem Sicherheits-Repository (trixie-security); die zum Zeitpunkt der Veröffentlichung aktuelle Version ist weiterhin im Haupt-Repository (trixie/main) verfügbar. Dasselbe wird in kürzerer Form auch durch die Befehle „apt list -a nginx“ oder „apt-cache madison nginx“ angezeigt.

2. Installieren Sie die gewünschte Version

Geben Sie nach dem Namen des Pakets mit einem Gleichheitszeichen die Version an, genau so, wie sie im vorherigen Befehl angezeigt wurde, einschließlich der Revisionsnummer und, falls vorhanden, des vorangestellten Teils „1:“ (Epoche):

sudo apt-get install nginx=1.24.0-2ubuntu7
sudo apt-get install bind9-host=1:9.20.26-1~deb13u1

Die Versionsnummer dient hier nur als Beispiel; kopieren Sie Ihre eigene aus der Ausgabe von „apt-cache policy“. Ist die angeforderte Version älter als die installierte, fragt apt nach einer Bestätigung für das Downgrade; bei nicht-interaktiver Ausführung ist hierfür der Schalter „--allow-downgrades“ erforderlich.

3. Versionsnummer festhalten

Wenn Sie das Paket nicht fixieren, wird es beim nächsten „apt upgrade“ oder bei der automatischen Aktualisierung wieder auf die neueste Version aktualisiert. So fixieren Sie das Paket:

sudo apt-mark hold nginx
apt-mark showhold
sudo apt-mark unhold nginx

Der erste Befehl hält das Paket zurück, der zweite listet die zurückgehaltenen Pakete auf, der dritte hebt die Zurückhaltung auf. Im Test wurden die zurückgehaltenen Pakete in der Zeile „The following packages have been kept back:“ aufgeführt und nicht aktualisiert. Ein zurückgehaltenes Paket erhält auch keine Sicherheitsupdates; nutzen Sie diese Funktion daher bitte nur als vorübergehende Lösung. Informationen zur Aktualisierung des Systems finden Sie in unserer Anleitung zur Systemaktualisierung.

Häufige Fehler

  • E: Version '...' for '...' was not found (Die angegebene Version wurde nicht gefunden): Die angegebene Version ist in den Repositories nicht vorhanden. Unter Ubuntu und Debian werden in den Repositories in der Regel nur die Release-Version und die zuletzt aktualisierte Version beibehalten, während Zwischenversionen entfernt werden. Überprüfen Sie die genaue Versionsnummer oder nutzen Sie das eigene Repository des Softwareherstellers, das häufig auch mehrere ältere Versionen bereitstellt.
  • Abhängigkeitsfehler (Depends: ... but ... is to be installed): Das Paket erfordert die gleiche Version anderer Pakete. Im Test wurde das Downgrade von „bind9-host“ wie folgt unterbrochen: bind9-host : Depends: bind9-libs (= 1:9.20.26-1~deb13u1) but 1:9.20.30-1~deb13u1 is to be installed. Geben Sie in diesem Fall die Abhängigkeit ebenfalls im selben Befehl an: sudo apt-get install --allow-downgrades bind9-host=1:9.20.26-1~deb13u1 bind9-libs=1:9.20.26-1~deb13u1; im Test wurden dadurch beide Pakete heruntergestuft.
  • Installation einer bereits heruntergeladenen .deb-Datei: Wenn Sie das .deb-Paket der alten Version haben (beispielsweise im Verzeichnis /var/cache/apt/archives/), können Sie es mit dem Befehl „sudo apt install ./csomag.deb“ installieren, wodurch apt auch die Abhängigkeiten auflöst.

Überprüfung

Nach der Installation zeigt die Zeile „Installed“ in der Ausgabe des Befehls „apt-cache policy csomagnev“ die tatsächliche Version an; die meisten Programme geben diese zudem mit dem Schalter „--version“ (beispielsweise „nginx -v“) aus.

Zurück: Linux-Artikel (62)