Versionskonvention für Debian-Pakete

35

Ich verwende Debian / Ubuntu und bin verwirrt über Paketversionen. Bei Verwendung des dpkg -lBefehls erhalte ich:

ii  vim                                 2:7.3.429-2ubuntu2.1                Vi IMproved - enhanced vi editor
ii  vim-common                          2:7.3.429-2ubuntu2.1                Vi IMproved - Common files
ii  vim-runtime                         2:7.3.429-2ubuntu2.1                Vi IMproved - Runtime files
ii  vim-tiny                            2:7.3.429-2ubuntu2.1                Vi IMproved - enhanced vi editor - compact version
ii  virt-what                           1.11-1                              detect if we are running in a virtual machine
ii  w3m                                 0.5.3-5ubuntu1                      WWW browsable pager with excellent tables/frames support
ii  watershed                           6                                   reduce superfluous executions of idempotent command
ii  wget                                1.13.4-2ubuntu1                     retrieves files from the web
ii  whiptail                            0.52.11-2ubuntu10                   Displays user-friendly dialog boxes from shell scripts
ii  whoopsie                            0.1.33                              Ubuntu crash database submission daemon
ii  wimlib9                             1.5.0-1~webupd8~precise             Library to extract, create, modify, and mount WIM files
ii  wimtools                            1.5.0-1~webupd8~precise             Tools to extract, create, modify, and mount WIM files
ii  wireless-tools                      30~pre9-5ubuntu2                    Tools for manipulating Linux Wireless Extensions
ii  wpasupplicant                       0.7.3-6ubuntu2.1                    client support for WPA and WPA2 (IEEE 802.11i)
ii  x11-common                          1:7.6+12ubuntu2                     X Window System (X.Org) infrastructure
ii  x11-utils                           7.6+4ubuntu0.1                      X11 utilities
ii  xauth                               1:1.0.6-1                           X authentication utility
ii  xbitmaps                            1.1.1-1                             Base X bitmaps
ii  xclip                               0.12-1                              command line interface to X selections
ii  xfonts-encodings                    1:1.0.4-1ubuntu1                    Encodings for X.Org fonts
ii  xfonts-utils                        1:7.6+1                             X Window System font utility programs
ii  xkb-data                            2.5-1ubuntu1.3                      X Keyboard Extension (XKB) configuration data
ii  xml-core                            0.13                                XML infrastructure and XML catalog file support
rc  xpdf                                3.02-21build1                       Portable Document Format (PDF) reader
ii  xterm                               271-1ubuntu2.1                      X terminal emulator
ii  xz-lzma                             5.1.1alpha+20110809-3               XZ-format compression utilities - compatibility commands
ii  xz-utils                            5.1.1alpha+20110809-3               XZ-format compression utilities
ii  zabbix-agent                        1:1.8.11-1                          network monitoring solution - agent
ii  zlib1g                              1:1.2.3.4.dfsg-3ubuntu4             compression library - runtime
ii  zlib1g-dev                          1:1.2.3.4.dfsg-3ubuntu4             compression library - development
ii  zsh                                 4.3.17-1ubuntu1                     shell with lots of features

Die dritte Spalte ist version, aber alles ist "durcheinander" in einer Weise, die ich nicht verstehen kann. Ich meine, verschiedene Pakete verwenden völlig unterschiedliche Namensspezifikationen.

Hier sind die wichtigsten Fragen:

  1. Warum enthalten einige Versionsnummern ubuntuund andere nicht?
  2. Was bedeutet die besondere Zeichensetzung -~+?
  3. Was ist alpha, buildund dfsg? Kann ich sie nur beiläufig benutzen?
  4. vimund andere pakete haben 2:. Was bedeutet das?
  5. Wie funktioniert "Versionsvergleich", wenn Versionsformate so unterschiedlich sein können?

Kann mir das bitte jemand erklären? Oder wo finde ich ein offizielles Dokument?

Danke im Voraus.

cizixs
quelle
Was meinst du mit: "Warum gibt es Ubuntu in ihnen, und gibt es nicht?"
Ciro Santilli新疆改造中心法轮功六四事件
1
@ CiroSantilli709 大 大 抓捕 六四 事件 dh warum haben einige Versionsnummern ein Suffix, das das Wort enthält ubuntuund einige nicht ?
Rakslice

Antworten:

50

Das Debian-Richtlinienhandbuch enthält Folgendes zum Versionsfeld, das einige Teile Ihrer Frage beantwortet:

Format

Das Format ist: [epoch:]upstream_version[-debian_revision]

Die drei Komponenten hier sind:

Epoche

Dies ist eine einzelne (im Allgemeinen kleine) vorzeichenlose Ganzzahl. Es kann weggelassen werden, in welchem ​​Fall Null angenommen wird. Wenn es weggelassen wird, darf die upstream_version keine Doppelpunkte enthalten. Es wird bereitgestellt, um Fehler in den Versionsnummern älterer Versionen eines Pakets sowie in den früheren Versionsnummernschemata eines Pakets zuzulassen.

upstream_version

Dies ist der Hauptteil der Versionsnummer. Dies ist normalerweise die Versionsnummer des Originalpakets ("Upstream" -Pakets), aus dem die .deb-Datei erstellt wurde, sofern dies zutreffend ist. Normalerweise hat dies dasselbe Format wie das, das von den Autoren angegeben wurde. Möglicherweise muss es jedoch neu formatiert werden, damit es in das Format und das Vergleichsschema des Paketverwaltungssystems passt.

Das Vergleichsverhalten des Paketverwaltungssystems bezüglich der upstream_version wird nachfolgend beschrieben. Der Teil upstream_version der Versionsnummer ist obligatorisch.

Die Upstream-Version darf nur alphanumerische Zeichen [36] und die Zeichen "."(Punkt), "+"(Plus), "-"(Bindestrich), ":"(Doppelpunkt), "~"(Tilde) enthalten und sollte mit einer Ziffer beginnen. Wenn es keine debian_revision gibt, sind keine Bindestriche zulässig. Wenn es keine Epoche gibt, sind Doppelpunkte nicht zulässig.

debian_revision

Dieser Teil der Versionsnummer gibt die Version des Debian-Pakets basierend auf der Upstream-Version an. Es darf nur alphanumerische Zeichen und die Zeichen "."(Punkt), "+"(Plus) und "~"(Tilde) enthalten und wird auf die gleiche Weise verglichen wie die Upstream- Version.

Es ist optional; Ist dies nicht der Fall , enthält die Upstream-Version möglicherweise keinen Bindestrich. Dieses Format stellt den Fall dar, dass eine Software speziell als Debian-Paket geschrieben wurde, wobei die Debian-Paketquelle immer mit der ursprünglichen Quelle identisch sein muss und daher keine Versionsangabe erforderlich ist.

Es ist üblich , die neu zu starten Debian - Revision bei 1 jedes Mal , wenn die Upstream_Version erhöht.

Das Paketverwaltungssystem teilt die Versionsnummer am letzten Bindestrich in der Zeichenfolge (falls vorhanden) auf, um die Upstream- Version und die Debian- Version zu bestimmen . Das Fehlen einer debian_revision entspricht einer debian_revision von 0.

Vergleich

Wenn zwei Versionsnummern verglichen werden, wird zuerst die Epoche jeder verglichen, dann die Upstream_Version, wenn die Epoche gleich ist, und dann die Debian_Version, wenn die Upstream_Version ebenfalls gleich ist. Epoche wird numerisch verglichen. Die Teile upstream_version und debian_revision werden vom Paketverwaltungssystem unter Verwendung des folgenden Algorithmus verglichen:

Die Zeichenfolgen werden von links nach rechts verglichen.

Zunächst wird der Anfangsteil jeder Zeichenfolge bestimmt, der ausschließlich aus nichtstelligen Zeichen besteht. Diese beiden Teile (von denen einer leer sein kann) werden lexikalisch verglichen. Wenn eine Differenz gefunden wird, wird sie zurückgegeben. Der lexikalische Vergleich ist ein Vergleich von ASCII-Werten, die so geändert wurden, dass alle Buchstaben früher sortiert werden als alle Nicht-Buchstaben und eine Tilde vor allem sortiert wird, auch vor dem Ende eines Teils. Zum Beispiel sind die folgenden Teile in sortierter Reihenfolge von der frühesten bis zuletzt: ~~, ~~a, ~, der leere Teil a.

Dann wird der Anfangsteil des Restes jeder Zeichenkette bestimmt, der vollständig aus Ziffern besteht. Die numerischen Werte dieser beiden Teile werden verglichen, und jede festgestellte Differenz wird als Ergebnis des Vergleichs zurückgegeben. Zu diesem Zweck zählt eine leere Zeichenfolge (die nur am Ende einer oder beider verglichener Versionszeichenfolgen auftreten kann) als Null.

Diese beiden Schritte (Vergleichen und Entfernen anfänglicher Zeichenfolgen ohne Ziffern und anfänglicher Ziffernfolgen) werden wiederholt, bis ein Unterschied festgestellt wird oder beide Zeichenfolgen erschöpft sind.

Beachten Sie, dass der Zweck von Epochen darin besteht, Fehler bei der Versionsnummerierung zu vermeiden und Situationen zu bewältigen, in denen sich das Versionsnummerierungsschema ändert. Es ist nicht vorgesehen, mit Versionsnummern umzugehen, die Buchstabenfolgen enthalten, die das Paketverwaltungssystem nicht interpretieren kann (wie z. B. ALPHAoder pre-), oder mit dummen Ordnungen.

ubuntuzeigt an, dass das Paket speziell für Ubuntu erstellt wurde. Die Zeichenfolgen alphaund buildscheinen keine besondere Bedeutung zu haben, dfsgbeziehen sich jedoch auf ein Paket, das zur Einhaltung der Debian-Richtlinien für freie Software modifiziert wurde .

Flup
quelle
1
Danke, das hilft sehr. Aber wie funktioniert der Versionsvergleich? Ziffern, Buchstaben und ~ +, welche zuerst und welche zuletzt?
Cizixs
Ich habe das Zitat in meiner Antwort um den Abschnitt des Handbuchs erweitert, der das Vergleichsverhalten beschreibt.
Flup
2
Gibt es irgendwo ein Online-Tool, mit dem ich testen kann, wie diese Versionszeichenfolgen sortiert werden?
Nick
Könnten Sie bitte die gleichen Beispiele einfügen? Zum Beispiel, indem Sie einige der obigen Versionen in separate Teile zerlegen. Wenn sowohl die Upstream-Version als auch die Debian-Version enthalten können - und + woher wissen wir, wo die Trennung ist? Auch die erste Verbindung scheint unterbrochen zu sein.
Fersarr
@fersarr Ich überlasse anderen Beispiele, aber ich habe den Link repariert.
Flup
10

XubuntuY Teil der Version zB 1ubuntu1

  • Xist die Debian-Paketversion. Die meisten Ubuntu-Pakete basieren auf Debian-Paketen, einer "Upstream" -Distribution.

    Wenn 0, bedeutet dies, dass es kein Debian-Paket gibt: Es existiert nur in Ubuntu.

    X Wird zurückgesetzt, wenn die echte Upstream-Version aktualisiert wird, z. B. Binutils 2.25 auf Binutils 2.26.

    Debian-Versionen existieren, weil Debian möglicherweise Patches für die Pakete erstellt, damit dies im Debian-System oder für Sicherheitsversionen besser funktioniert.

    Debian-Entwickler sind natürlich daran interessiert, Patches wieder zusammenzuführen, um ein Verzweigen zu vermeiden.

    Jedes Mal, wenn ein neuer Patch erstellt wird, erhöht sich diese Anzahl.

  • ubuntuY es ist optional.

    Wenn nicht vorhanden, bedeutet dies, dass das Debian-Paket direkt verwendet wurde.

    Andernfalls bedeutet dies, dass dies der Y-te Ubuntu-Patch ist, der auf einem Debian-Patch angewendet wird, ähnlich wie Debian auf dem realen Upstream.

    Ywird zurückgesetzt, wenn Xerhöht.

Wenn Sie die Quelle eines Pakets mit:

apt-get source gdb

Sie sehen die von Ubuntu und Debian angewendeten Patches unter:

debian/patches/

Noch interessanter ist, dass Sie mit klonen bzrund eine Liste aller Ubuntu-Versionen anzeigen können, die sich zwischen ihnen geändert haben:

bzr branch ubuntu:gdb
cd gdb
bzr log | less

Siehe auch: https://askubuntu.com/questions/620533/was-ist-die-Bedeutung-der-xubuntuy-String-in-ubuntu-Paketnamen

Was die Epoche eigentlich darstellt

https://askubuntu.com/questions/441879/why-do-some-packages-have-extra-numbers-on-front-of-the-the-version-string-

Ciro Santilli ist ein Schauspieler
quelle