Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Ein Terminal öffnen, optional
Dieser Artikel beschreibt die Bedeutung der Versionsnummer und die Benennung der Debian-Pakete in Ubuntu. Der Dateiname eines Debian-Pakets in Ubuntu besteht in der Regel aus fünf Teilen (ausgeschlossen der Dateiendung): Dem Namen des Programmes, der Version des Programmes, der Version des Paketes in Debian, der Version des Paketes in Ubuntu und der Architektur.
Als Beispiel kann das Python-Paket in Ubuntu 14.04 betrachtet werden. Dieses liegt im Pool des Paketmirrors als Datei python_2.7.5-5ubuntu3_amd64.deb vor.
python_2.7.5-5ubuntu3_amd64.deb |
Der String gibt den Namen des Programmes an. Hier also: python
python_2.7.5-5ubuntu3_amd64.deb |
Diese Nummer besagt, was für eine Version des Programmes in den Paketquellen ist (auf englisch wird sie "upstream version" genannt). Hier ist es also Version 2.7.5 von Python.
python_2.7.5-5ubuntu3_all.deb |
Diese Nummer gibt die Version des Debian-Paketes an (auf englisch wird sie "debian revision" genannt). Existiert also die gleiche Version (in diesem Beispiel 2.7.5) des Programmes bereits in den Debianpaketquellen, wird die Nummer des entsprechenden Debianpaketes angegeben. Aus dem Beispiel lässt sich ablesen, dass es in den Debianpaketquellen ein Paket mit der Bezeichnung python-2.7.5-5 zu dem Zeitpunkt der Ubuntupaketisierung gab. Die Nummer wird angegeben, da viele Ubuntupakete aus Debianpaketen entwickelt werden und die meisten Steuerungsdateien aus den Debianpaketen kommen.
Existiert keine Debian-Version dieses Programmes, lautet diese Nummer immer 0. Die Nummer ist ebenfalls 0 wenn ein Ubuntuentwickler eine neuere Version des Programmes paketiert, als in den Debianpaketquellen ist.
python_2.7.5-5ubuntu3_all.deb |
Dieses Suffix zeigt die Ubuntuversion eines Paketes an (auf englisch wird sie "ubuntu revision" genannt). Es handelt sich hier also um die dritte Version des Debianpaketes in den Ubuntupaketquellen. Eine neue Version eines Paketes wird zum Beispiel hochgeladen, weil es im alten irgendwelche Fehler gab. Die Zählung beginnt immer bei 1. Es gibt also kein Paket, welches auf ubuntu0 endet.
Fehlt dieses Suffix komplett, deutet dies darauf hin, dass es keinerlei Veränderungen an dem von Debian übernommenen Paket gab.
pidgin-data_2.10.0-0ubuntu2_all.deb |
Auf den ersten Blick sieht die Versionierung dieses Pakets geläufig aus. Betrachtet man dieses Paket allerdings direkt, z.B. mit dpkg-deb -W pidgin-data_2.10.0-0ubuntu2_all.deb
, stellt man folgende Eigenart fest:
pidgin-data 1:2.10.0-0ubuntu2
Manchmal kann es vorkommen, dass ein Paket vor der Versionsnummer des Programmes noch eine Ziffer und einen Doppelpunkt stehen hat. Dies nennt man "Epoch". Die Epoch-Nummer wird verwendet um Fehler in der Versionierung zu beheben oder um sicherzustellen, dass immer diese Version eines Paketes installiert bleibt auch wenn sich die Upstream-Version ändern sollte.
pidgin-data_2.10.0-0ubuntu2_all.deb |
Damit ein Paket eindeutig einer Prozessorarchitektur zugeordnet werden kann und somit eine Verwechslung unterschiedlich kompilierter Binaries ausgeschlossen wird, findet eine Bezeichnung dieser vor der Dateiendung .deb statt. Am häufigsten sind die Architekturen amd64
und i386
für 64- und 32-Bit, sowie eine allgemeingültige Angabe all
. Pakete mit dieser Angabe können mit allen Prozessoren genutzt werden, da nur architekturunabhängige Dateien, wie Bilder, Dokumentation, Übersetzungen, Konfigurationsdateien u.ä. bereitgestellt werden.
Um zwei Versionsstrings zu vergleichen, kann man direkt dpkg mit der Option --compare-versions
verwenden:
dpkg --compare-versions VERSION1 OPERATOR VERSION2
Wichtigste Versionsoperatoren | |
Versionsoperator | Bedeutung |
eq | gleiche Version |
gt | größere Version |
ge | größere oder gleiche Version |
lt | kleinere Version |
le | kleinere oder gleiche Version |
Alternativ können u.a. noch die in den debian/control-Dateien verwendeten Operatoren =
, >>
, >=
, <<
, <=
verwendet werden. Siehe dazu die Manpage dpkg(1).
Der Befehl erzeugt keine Ausgabe, sondern man muss nach dem Rückgabewert fragen. Bei Erfolg der Vergleiches, ist dieser 0
, ansonsten 1
.
dpkg --compare-versions "1.3.6-1ubuntu0.2" "ge" "1.3.6-1ubuntu0.2+de" && echo "höher oder gleich" || echo "niedriger"
niedriger
Somit ist die Version 1.3.6-1ubuntu0.2 nicht höher oder gleich der Version 1.3.6-1ubuntu0.2+de, sondern niedriger.
Der Vergleich von Paketversionen folgt einem bestimmten Algorithmus. Es wird von links nach rechts verglichen und in der Reihenfolge Epochversion, Upstreamversion, Debian- und Ubuntuversion:
Vergleich der Epochversionsziffern.
Vergleich der Upstreamversionszeichenfolge:
Lexikaler Vergleich nach modifizierten ASCII-Werten, sodass Buchstaben aus dem Alphabet vor allen anderen Zeichen angeordnet sind, mit Ausnahme der Tilde "~", die vor allen anderen Zeichen eingeordnet ist.
Vergleich der Debian- und Ubuntuversionszeichenfolge (getrennt durch letzten Trennstrich "-" in Versionsstring) (lexikaler Vergleich wie bei Upstreamversion).
Wer wissen möchte, welche Version eines Pakets für welche Ubuntu-Version zur Verfügung steht, kann dies mit einem Browser über das Internet abfragen:
http://packages.ubuntu.com/PAKET
Alternativ kann man diese Abfrage auch in einem Terminal unter den bereits installierten Paketen durchführen:
dpkg-query -W PAKET
Bzw. unter allen lokal von APT erfassten Paketen:
apt-cache policy PAKET
Oder bei einer vorliegenden Paketdatei:
dpkg-deb -W PAKET.deb
Für PAKET
ist der entsprechende Paketname einzusetzen.
Diese Revision wurde am 7. Januar 2017 22:50 von Vej erstellt.