Frage Debian-Pakete Version Konvention


Ich benutze Debian / Ubuntu und bin verwirrt über Versionen von Paketen. Beim Benutzen dpkg -l Befehl, ich bekomme:

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 versionaber es ist alles "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 haben manche Versionsnummern? ubuntu in ihnen, und manche nicht?
  2. Was macht all die spezielle Interpunktion -~+ bedeuten?
  3. Was sind alpha, build, und dfsg? Kann ich sie nur beiläufig benutzen?
  4. vim und andere Pakete haben 2:. Was bedeutet das?
  5. Wie funktioniert der Versionsvergleich, wenn Versionsformate so unterschiedlich sein können?

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

Danke im Voraus.


24
2018-06-12 07:27


Ursprung


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


Antworten:


Das Debian-Richtlinienhandbuch möchte ich über das Versionsfeld sagen, 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 (in der Regel kleine) vorzeichenlose Ganzzahl. Es kann weggelassen werden, in diesem Fall wird Null angenommen. Wenn es weggelassen wird, dann die upstream_version darf keine Doppelpunkte enthalten.   Es ist vorgesehen, Fehler in den Versionsnummern älterer Versionen eines Pakets und auch in den früheren Versionsnummerierungsschemata eines Pakets zuzulassen.

upstream_version

Dies ist der Hauptteil der Versionsnummer. Es ist normalerweise die Versionsnummer des ursprünglichen ("upstream") Pakets, aus dem die .deb-Datei erstellt wurde, falls dies zutrifft. Gewöhnlich wird dies im selben Format sein wie das, das von den Autor (en) im Upstream angegeben wurde; Es muss jedoch möglicherweise neu formatiert werden, um in das Format und das Vergleichsschema des Paketverwaltungssystems zu passen.

Das Vergleichsverhalten des Paketverwaltungssystems gegenüber dem upstream_version wird nachfolgend beschrieben. Das upstream_version Teil der Versionsnummer ist obligatorisch.

Das upstream_version darf nur alphanumerische Zeichen [36] und die Zeichen enthalten "." (Punkt), "+" (Plus), "-" (Bindestrich), ":" (Doppelpunkt), "~" (Tilde) und sollte mit einer Ziffer beginnen. Wenn es keine gibt debian_revision dann sind Bindestriche nicht erlaubt; wenn es keine gibt Epoche dann sind Doppelpunkte nicht erlaubt.

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 enthalten "." (Punkt), "+" (Plus), "~" (Tilde) und wird in der gleichen Weise verglichen wie die upstream_version ist.

Es ist optional; wenn es nicht da ist, dann die upstream_version darf keinen Bindestrich enthalten Dieses Format stellt den Fall dar, in dem ein Stück Software speziell als Debian-Paket geschrieben wurde, wobei die Quelle des Debian-Pakets immer mit der ursprünglichen Quelle identisch sein muss und daher keine Revisionsangabe erforderlich ist.

Es ist üblich, das neu zu starten debian_revision bei 1 jedes Mal upstream_version erhöht.

Das Paketverwaltungssystem teilt die Versionsnummer am letzten Bindestrich in der Zeichenfolge (falls vorhanden) auf, um die Versionsnummer zu ermitteln upstream_versionund debian_revision. Die Abwesenheit von a debian_revision ist äquivalent zu a debian_revision von 0.

Vergleich

Wenn zwei Versionsnummern verglichen werden, wird zuerst die Epoche von jedem verglichen, dann die upstream_version, wenn die Epoche gleich ist, und dann debian_revision ob upstream_version ist auch gleich. Epoche wird numerisch verglichen. Das upstream_versionund debian_revision Teile werden vom Paketverwaltungssystem mit dem folgenden Algorithmus verglichen:

Die Strings werden von links nach rechts verglichen.

Zuerst der Anfangsteil jeder Zeichenfolge, der vollständig aus Nicht-Ziffern besteht   Zeichen wird bestimmt. Diese zwei Teile (von denen einer leer sein kann)   werden lexikalisch verglichen. Wenn eine Differenz gefunden wird, wird sie zurückgegeben. Das   Lexikalischer Vergleich ist ein Vergleich von ASCII-Werten so modifiziert   alle Buchstaben sortieren früher als alle Nichtbuchstaben und so dass a   Tilde sortiert vor allem, sogar das Ende eines Teils. Zum Beispiel, die   Folgende Teile sind von frühester bis spätester Sortierung sortiert: ~~,    ~~a, ~der leere Teil, a.

Dann der Anfangsteil des Rests jeder Zeichenfolge, die besteht   vollständig aus Ziffern besteht. Die numerischen Werte von   Diese beiden Teile werden verglichen, und jeder gefundene Unterschied wird als zurückgegeben   das Ergebnis des Vergleichs. Für diese Zwecke eine leere Zeichenfolge   (was nur am Ende eines oder beider Versionszeichenketten vorkommen kann)   verglichen) zählt als Null.

Diese zwei Schritte (Vergleichen und Entfernen von anfänglichen Nicht-Ziffern-Zeichenfolgen und   Anfangszeichenfolgen) werden wiederholt, bis eine Differenz gefunden wird oder   beide Saiten sind erschöpft.

Beachten Sie, dass der Zweck von Epochen darin besteht, uns das Zurücklassen zu ermöglichen   Fehler in der Versionsnummerierung und um mit Situationen umzugehen, in denen die   Änderungen des Versionsnummernschemas Es ist nicht beabsichtigt, damit umzugehen   Versionsnummern, die Buchstabenketten enthalten, die das Paket enthält   Managementsystem kann nicht interpretieren (wie ALPHA oder pre-), oder   mit dummen Bestellungen.

ubuntu zeigt an, dass das Paket speziell für Ubuntu erstellt wurde. Das alphaund build Saiten scheinen keine besondere Bedeutung zu haben, aber dfsg bezieht sich auf ein Paket, das wurde geändert für die Einhaltung der Debian-Richtlinien für freie Software.


37
2018-06-12 07:54



Danke, das hilft sehr. Aber wie funktioniert der Versionsvergleich? Ziffern, Buchstaben und ~ +, die zuerst kommt, und welche? - cizixs
Ich habe das Zitat in meiner Antwort um den Abschnitt des Handbuchs erweitert, der das Vergleichsverhalten beschreibt. - Flup
Gibt es irgendwo ein Online-Tool, mit dem ich testen kann, wie diese Versions-Strings sortiert werden? - Nick
Könnten Sie bitte die gleichen Beispiele einfügen? Zum Beispiel, Parsen einiger der obigen Versionen in die einzelnen Teile. Wenn sowohl die Upstream-Version als auch die Debian-Version enthalten können - und + woher wissen wir, wo die Trennung ist? Auch der erste Link scheint gebrochen zu sein. - fersarr
@fersarr Ich werde Beispiele anderen hinterlassen, aber ich habe den Link repariert. - Flup


XubuntuY Teil der Version z.B. 1ubuntu1

  • X ist die Debian-Paketversion. Die meisten Ubuntu-Pakete basieren auf Debian-Paketen, einer "Upstream" -Distro.

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

    X wird zurückgesetzt, wenn die tatsächliche Upstream-Version aktualisiert wird, z. Binutils 2.25 nach Binutils 2.26.

    Es gibt Debian-Versionen, da Debian möglicherweise Patches für die Pakete erstellt, so dass es im Debian-System oder für Sicherheitsversionen besser funktioniert.

    Debian-Entwickler sind natürlich daran interessiert, Patches wieder zusammenzufügen, um das Forking zu vermeiden.

    Jedes Mal, wenn neue Set-Patches erstellt werden, erhöht sich diese Anzahl.

  • ubuntuY es ist optional.

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

    Ansonsten bedeutet dies, dass dies der Yth Ubuntu-Patch ist, der auf einen Debian-Patch angewendet wird, ähnlich wie Debian auf den echten Upstream angewendet wird.

    Ysetzt wann zurück X erhöht sich.

Wenn Sie die Quelle eines Pakets mit erhalten:

apt-get source gdb

Sie werden die von Ubuntu und Debian verwendeten Patches sehen unter:

debian/patches/

Noch interessanter, Sie können mit klonen bzr und sehen Sie eine Liste aller Ubuntu-Versionen mit dem, was sich zwischen ihnen geändert hat:

bzr branch ubuntu:gdb
cd gdb
bzr log | less

Siehe auch: https://askubuntu.com/questions/620533/what-is-the-meaning-of-the-xubuntuy-string-in-ubuntu-package-names

Was die Epoche eigentlich darstellt

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


5
2017-07-26 08:31