Unterschiedliche Versionen Source/Binärpakete? [gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
nudgegoonies
Beiträge: 939
Registriert: 16.02.2009 09:35:10

Unterschiedliche Versionen Source/Binärpakete? [gelöst]

Beitrag von nudgegoonies » 07.01.2019 12:26:39

Ich hätte eine Verständnisfrage. Mir ist aufgefallen, dass das postgresql-common Source-Paket die Versionsnummer 181+deb9u2 hat. Die meisten daraus resultierenden Binär-Pakete haben aber die Versionsnummer 9.6+181+deb9u2. Hier mal zwei Beispiele aus diesem Source-Paket:
https://packages.debian.org/stretch/postgresql-common hat 181+deb9u2
https://packages.debian.org/stretch/postgresql-contrib hat 9.6+181+deb9u2

Ich arbeite (mal wieder, nachdem ich schon mal aufgegeben hatte, jetzt brauche ich das beruflich) an einer Lösung für automatisches Pinning von Binärpaketen aus einem Source-Paket heraus. Ich weiß jetzt wie ich über ein gegebenes Source-Paket an die Binärpakete komme. Aber ich ging davon aus, dass Source- und daraus resultierende Binär-Pakete immer die gleiche Version haben. Das ist bei postgresql-common nicht so. Ist das wirklich debian-konform? Man kann so ja gar nicht mehr genau zurückverfolgen, aus welcher Source-Paket Version ein Binär-Paket gebaut wurde?
Zuletzt geändert von nudgegoonies am 08.01.2019 16:34:09, insgesamt 1-mal geändert.
Soft: Bullseye AMD64, MATE Desktop. Repo's: Backports, kein Proposed, eigene Backports. Grafik: Radeon R7 360 MESA.
Hardware: Thinkstation S20, Intel X58, 16GB, Xeon W3530, BCM5755 NIC, EMU10K1 SND, SATA SSD+HDS und DVD+RW.

tijuca
Beiträge: 301
Registriert: 22.06.2017 22:12:20

Re: Unterschiedliche Versionen Source/Binärpakete?

Beitrag von tijuca » 08.01.2019 15:23:03

Aber ich ging davon aus, dass Source- und daraus resultierende Binär-Pakete immer die gleiche Version haben.
Das hängt vom Sourceformat ab die für das Paket deklariert worden ist. Das momentan aktuellste Format ist die Version 3.0, das wiederum unterteilt sich in "3.0 (native)" und "3.0 (quilt)". Die Man Page zu dpkg-source hält die entsprechenden Information bereit.

Beim nativen Format haben Binärpakete keine Debian Revision, beim Quiltformat besitzen Binärpakete immer einen Debian Revision.

Also z.B. 181 für eine Version bei einem nativem Binärpaket, und das Gegenstück dazu wäre 181-1 die erste Debian Version wenn das Quellpaket im Format "3.0 (quilt) verwaltet wird.

Wozu nun noch jetzt so Teile wie "+deb9u2" in der Version?
So etwas wird benötigt um mit Abhängigkeiten richtig arbeiten zu können.
Für die Abhängigkeitsauflösung ist

Code: Alles auswählen

181+deb9u2
eine größere Version wie nur

Code: Alles auswählen

$ dpkg --compare-versions 181 gt 181+deb9u2 && echo "'181+deb9u2' ist größer als '181'" || echo "nee, nicht größer"
nee, nicht größer
$ dpkg --compare-versions 181 lt 181+deb9u2 && echo "'181+deb9u2' ist größer als '181'" || echo "nee, nicht größer"
'181+deb9u2' ist größer als '181'
Das ist bei postgresql-common nicht so.
Die Lösung für diese Frage steht in der zugehörigen debian/rules Datei.
https://sources.debian.org/src/postgres ... rules/#L38

Anders ausgedrückt, (weil es geht) und es auch manchmal sinnvoll ist die Versionsnummer für ein Binärpaket im Dateinamen zu ändern. So wie hier der Fall.

Übrigens willst Du nicht mit den Quellpakten arbeiten wenn du Versionen betrachtest! Was Dich interessiert sind in so einem Fall immer die Binärpakte und die zugehörigen Versionen. Dazu gibt es dann dpkg-query, und apt{,-cache} um an die nötigen Info zu gelangen.

nudgegoonies
Beiträge: 939
Registriert: 16.02.2009 09:35:10

Re: Unterschiedliche Versionen Source/Binärpakete? [gelöst]

Beitrag von nudgegoonies » 08.01.2019 16:33:54

Danke Dir sehr für die Antwort. Du hast gleich zwei Probleme gleichzeitig gelöst :THX:

Mit apt-cache showsrc kann ich mir zu einem Binärpaket die Sourcedaten ansehen. Aus den Sourcedaten kann ich in der Zeile Binary alle daraus resultierenden Binary Pakete auslesen. Und dann kann ich zu denen die Binärpaket-Versionen ausgeben!
Soft: Bullseye AMD64, MATE Desktop. Repo's: Backports, kein Proposed, eigene Backports. Grafik: Radeon R7 360 MESA.
Hardware: Thinkstation S20, Intel X58, 16GB, Xeon W3530, BCM5755 NIC, EMU10K1 SND, SATA SSD+HDS und DVD+RW.

Antworten