zur Startseite

Druckausgabe von https://privat.albicker.org
Iveco Daily 4x4, Hunde und multithematisches Blog

Debian (.deb) Pakete bearbeiten: Abhängigkeiten anpassen

veröffentlicht am 07.10.2019 mit 1023 Worten - Lesezeit: 5 Minute(n)

Die kurze Vorgeschichte: In einem neu installierten debian sid fehlt mir das Paket bombono-dvd. Dieses ist in deb-multimedia zwar vorhanden, versucht von dort aber noch viele weitere Abhängigkeiten nachzuziehen.

Meine Vorgehensweise zur Einbindung von Fremdquellen:

Grundsätzlich versuche ich, meine Linux-Installationen möglichst nahe am jeweiligen Stand der Distribution selbst zu halten, d. h. “Fremdeinflüsse” zu minimieren. Und so bin ich auch hier vorgegangen.

Das deb-multimedia-Repo enthält eine Menge zusätzlicher oder angepaßter Software. Manches davon ist aber auch in den Standardquellen vorhanden. Und so was mag ich eigentlich nicht, denn früher oder später kann das zu einem Versionschaos führen. Und so hab ich also zunächst die Quelle eingebunden, die /etc/apt/sources.list sieht danach so aus:

deb http://deb.debian.org/debian/ unstable main contrib non-free 
deb-src http://deb.debian.org/debian/ unstable main contrib non-free 
deb https://www.deb-multimedia.org/ sid main non-free 

Die Datei /etc/apt/preferences sieht z.B. so aus.

Package: *
Pin: release o=Debian, a=unstable
Pin-Priority: 990
Package: *
Pin: origin www.deb-multimedia.org
Pin-Priority: 1

Ziel: wenn Probleme auftauchen, dann will ich die auf die Fremdpakete begrenzt sehen: lieber hab ich dort dann irgendwelche Bugs oder fehlende Funktionalitäten, als dass ich Probleme irgendwo im System habe und dann erstmal langwierig suchen muß, wo das denn evtl. herkommen kann.
Beliebtes Beispiel sind z. B. Multimedia-Codecs, die auf unterschiedliche Art “gebaut” werden können. Und da will ich sicherstellen, daß alle Standard-Anwendungen, die darauf zurückgreifen, die richtige - also von den Maintainern der Hauptdistribution vorgesehene - Version finden und nehme lieber in Kauf, daß ein zusätzliches Programm dann eben hie und da den “Schluckauf” hat.

Vorgehen zur Änderung von .deb-Paketen

Beispielhafte fehlerhafte Abhängigkeiten

Ein Installationsversuch von bombono-dvd lieferte dieses Ergebnis:

~# apt install -y bombono-dvd 
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.       
Statusinformationen werden eingelesen.... Fertig
Einige Pakete konnten nicht installiert werden. Das kann bedeuten, dass
Sie eine unmögliche Situation angefordert haben oder, wenn Sie die
Unstable-Distribution verwenden, dass einige erforderliche Pakete noch
nicht erstellt wurden oder Incoming noch nicht verlassen haben.
Die folgenden Informationen helfen Ihnen vielleicht, die Situation zu lösen:

Die folgenden Pakete haben unerfüllte Abhängigkeiten:
 bombono-dvd : Hängt ab von: libavcodec58 (>= 10:4.1)
               Hängt ab von: libavformat58 (>= 10:4.1) aber 7:4.1.4-1+b2 soll installiert werden
               Hängt ab von: libavutil56 (>= 10:4.1) aber 7:4.1.4-1+b2 soll installiert werden
               Hängt ab von: libswscale5 (>= 10:4.1) aber 7:4.1.4-1+b2 soll installiert werden
E: Probleme können nicht korrigiert werden, Sie haben zurückgehaltene defekte Pakete.

.deb-Paket “zerlegen”

Also habe ich das Paket von der Seite manuell heruntergeladen und in ein Arbeitsverzeichnis gelegt. Dort dann ausgeführt:

$ dpkg-deb --extract bombono-dvd_1.2.4-dmo3_amd64.deb tmp
$ dpkg-deb --control bombono-dvd_1.2.4-dmo3_amd64.deb tmp/DEBIAN

Im Unterverzeichnis /tmp/DEBIAN liegt jetzt eine Datei control mit diesem Inhalt:

Package: bombono-dvd
Source: bombono-dvd-dmo
Version: 1:1.2.4-dmo3
Architecture: amd64
Bugs: mailto:marillat@deb-multimedia.org
Maintainer: Christian Marillat <marillat@deb-multimedia.org>
Installed-Size: 2736
Depends: libatkmm-1.6-1v5 (>= 2.24.0), libavcodec58 (>= 10:4.1), libavformat58 (>= 10:4.1), libavutil56 (>= 10:4.1), libboost-filesystem1.67.0, libboost-regex1.67.0 (>= 1.67.0-10), libboost-system1.67.0, libc6 (>= 2.14), libcairo2 (>= 1.2.4), libcairomm-1.0-1v5 (>= 1.12.0), libdvdread4 (>= 4.1.3), libgcc1 (>= 1:3.0), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.35.9), libglibmm-2.4-1v5 (>= 2.54.0), libgtk2.0-0 (>= 2.10.0), libgtkmm-2.4-1v5 (>= 1:2.24.0), libpango-1.0-0 (>= 1.18.0), libpangocairo-1.0-0 (>= 1.14.0), libpangomm-1.4-1v5 (>= 2.40.0), libsigc++-2.0-0v5 (>= 2.6.1), libstdc++6 (>= 5.2), libswscale5 (>= 10:4.1), libxml++2.6-2v5 (>= 2.40.0), genisoimage, dvdauthor, mjpegtools, dvd+rw-tools, twolame, bombono-dvd-data, scons, fonts-freefont-ttf, ffmpeg
Suggests: totem
Section: graphics
Priority: optional
Homepage: http://www.bombono.org
Description: DVD authoring program with nice and clean GUI
 Bombono DVD is easy to use program for making DVD-Video.
 The main features of Bombono DVD are:
  * excellent MPEG viewer: Timeline and Monitor
  * real WYSIWYG Menu Editor with live thumbnails
  * comfortable Drag-N-Drop support
  * you can author to folder, make ISO-image or burn directly to DVD
  * reauthoring: you can import video from DVD discs.

und dort finden sich im Abschnitt Depends die Abhängigkeiten.

Hilfreich ist es, die Systematik der Versionsnummern zu kennen:

Die drei Komponenten hier sind:

Epoche
Dies ist eine einzelne (im Allgemeinen kleine) ganze Zahl ohne Vorzeichen. Sie kann weggelassen werden, wobei von Null ausgegangen wird. Wenn sie weggelassen wird, darf die upstream_version keine Doppelpunkte enthalten.
Epochen können helfen, wenn sich das vorgelagerte Versionsnummerierungsschema ändert, aber sie müssen mit Vorsicht verwendet werden. Sie sollten die Epoche nicht ändern, auch nicht im Experiment, ohne vorher einen Konsens über debian-devel zu erzielen.

upstream_version
Dies ist der Hauptteil der Versionsnummer. In der Regel ist es die Versionsnummer des Originalpakets (“upstream”), aus dem die.deb-Datei erstellt wurde, falls dies zutrifft. Normalerweise ist dies das gleiche Format wie das des/der vorgelagerten Autor(en); es kann jedoch erforderlich sein, es neu zu formatieren, um in das Format und das Vergleichsschema des Paketmanagementsystems zu passen.
Im Folgenden wird das Vergleichsverhalten des Paketmanagementsystems in Bezug auf die upstream_version beschrieben. Der upstream_version-Teil der Versionsnummer ist obligatorisch.
Die upstream_version darf nur alphanumerische Zeichen[6] und die Zeichen . enthalten. + - ~ (Punkt, Plus, Bindestrich, Tilde) und sollte mit einer Ziffer beginnen. Wenn es keine debian_revision gibt, sind Bindestriche nicht erlaubt.

debian_revision
Dieser Teil der Versionsnummer gibt die Version des Debian-Pakets basierend auf der Upstream-Version an. Sie darf nur alphanumerische Zeichen und die Zeichen + . ~ (plus, Punkt, Tilde) enthalten und wird wie die upstream_version verglichen.
Es ist optional; wenn es nicht vorhanden ist, darf die upstream_version keinen Bindestrich enthalten. Dieses Format stellt den Fall dar, in dem eine Software speziell für ein Debian-Paket geschrieben wurde, wobei der Quellcode des Debian-Pakets immer identisch mit dem ursprünglichen Quellcode sein muss und daher keine Revisionsangabe erforderlich ist.
Es ist üblich, die debian_revision bei 1 neu zu starten, wenn die upstream_version erhöht wird.
Das Paketverwaltungssystem bricht die Versionsnummer am letzten Bindestrich in der Zeichenkette (falls vorhanden) auseinander, um die upstream_version und debian_revision zu bestimmen. Das Fehlen einer debian_revision entspricht einer debian_revision von 0.>

Übersetzt mit www.DeepL.com/Translator

Aus der Terminalausgabe oben ergibt sich, daß i. W. die Epoche-Werte in deb-multimedia geändert sind, dies, um diese Pakete bevorzugt zu installieren. Diese werden gemäß der obigen Terminalausgabe auf die “soll”-Werte geändert, z. B. der Eintrag für libavcodec58 sieht dann so aus: libavcodec58 (>= 7:4.1.4-1+b2).

.deb-Paket neu bauen

Danach kann das Paket wieder zusammengebaut werden, evtl. mit anderem Namen, der es als selbst gebautes Paket erkennbar macht (wer es ganz genau nimmt, kann auch die Einträge für Source und Version anpassen):

$ dpkg --build tmp bombono-dvd_1.2.4-dmo-mod_amd64.deb
dpkg-deb: Paket »bombono-dvd« wird in »bombono-dvd_1.2.4-dmo-mod_amd64.deb« gebaut.

Beschreibung der Möglichkeiten mit dpkg-deb in den manpages.