Octave ist ein schlechtes Beispiel um einfach mal einen Backport der Version aus Testing zu erstellen, weil eben nicht mehr so "simple" zu machen. Aber auch nicht unlösbar.
Die Minivariante für einen passende Umgebung ein Paket zu bauen und viel flexiblere Variante gegenüber der VM Lösung ist die Benutzung von Chroots. Hierfür gibt es einige Anleitungen wie man diese erstellt und auch benutzt. Daher folgend nur ein paare Kommentare zu den genannten Problemen.
dnoob hat geschrieben: 08.12.2019 17:23:05
Ich habe (auf einer virtuellen Maschine) selbst ein Backport erstellt (
https://wiki.debian.org/SimpleBackportCreation)
Das hat dort funktioniert und auch das Installieren hat geklappt.
Also habe ich die Dateien auf meinen Host kopiert und da gehts nicht
40931
Funktioniert ein so erstelltes Backport nur auf dem PC, auf dem es erstellt wurde?
Code: Alles auswählen
dh_dwz
dwz: Too few files for multifile optimization
objcopy: 'debian/liboctave7/usr/lib/debug/.dwz/x86_64-linux-gnu/liboctave7.debug': No such file
dh_dwz: objcopy --compress-debug-sections debian/liboctave7/usr/lib/debug/.dwz/x86_64-linux-gnu/liboctave7.debug returned exit code 1
make: *** [debian/rules:56: binary] Fehler 2
Das Problem an sich liegt an dieser Stelle. Hier wird versucht
DWZ (DWARF-Fehlerinformationen) auszuführen, was aber misslingt. dh_dwz wurde mit debhelper 12 automatisiert (heißt man muss es nicht mehr explizit in debian/rules aufführen) eingeführt. Der hier auftretende Fehler kommt leider recht häufig vor wenn man versucht einen Backport zu erstellen. In diesem Fall hat der Fehler keine Auswirkungen auf das bzw. die zu erstellenden Pakete. Man kann auf die Ausführung verzichten, also muss man einen override in debian/rules platzieren.
dnoob hat geschrieben: 24.10.2020 19:59:19
Ich habe eine neuere Version von debhelper aus den Backports installiert:
und nochmal probiert:
41175
Jetzt weiß ich nicht mehr weiter.
Dieser Fehler liegt darin begründet, dass Deine Quellen sich gegenüber den Archiven geändert haben und dpkg daraus folgerichtig die weitere Ausführung verweigert. Warum das so war kann man jetzt nicht mehr nachvollziehen.
Das eigentliche Problem warum Du keinen eigenen Backport erstellen kannst ist das schon erkannte Versionsproblem bei debhelper-compat.
Die Paketmaintainer haben sich bisher nur die Auflösung der Abhängigkeiten für den Bau des Paketes in unstable gekümmert, also musst Du das hier selber etwas anpassen bzw. wissen wie das zu umschiffen ist.
debhelper-compat selber ist nur ein virtuelles Paket.
Code: Alles auswählen
$ apt show debhelper-compat
Package: debhelper-compat
State: kein reales Paket (virtuell)
N: Es kann kein Installationskandidat von Paket »debhelper-compat« ausgewählt werden, da kein solcher existiert.
N: Es können keine Versionen von Paket »debhelper-compat« ausgewählt werden, da es rein virtuell ist.
N: Keine Pakete gefunden
Dieses virtuelle Paket wird wiederum von debhelper bereit gestellt.
Code: Alles auswählen
$ apt show debhelper | grep -E 'Provides|Version'
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Version: 13.2.1
Provides: debhelper-compat (= 9), debhelper-compat (= 10), debhelper-compat (= 11), debhelper-compat (= 12), debhelper-compat (= 13), dh-sequence-dwz, dh-sequence-elf-tools, dh-sequence-installinitramfs, dh-sequence-systemd
Hier ist die Version 13.2.1 am Start, also die Version aus testing bzw. unstable, die Version in stable ist aber "nur" 12.1.1 und kann somit auch nur debhelper-compat 12 zur Verfügung stellen, debian/control will aber Version 13 erfüllt haben. Daher Dein Versionskonflikt.
Es gibt aber noch einen kleinen zusätzlichen Pitfall in debian-control von octave, dort ist auch noch debhelper (>= 12.8~) als Abhängigkeit aufgeführt, was auch eine größere Version wie 12.1.1 ist, kann also nicht erfüllt werden wenn man nicht die Version aus Backports installiert hat. Allerdings ist diese Konstellation hier aus debhelper-compat und zusätzlichem debhelper als Abhängigkeiten etwas sinnfrei. Entweder man benutzt debhelper-compat oder eben debhelper. Ist am Ende aber egal da der Bau von Octave Abhängigkeiten zu anderen externen Paketen hat die momentan nur in buster-backports aufgelöst werden können.
So wie kommt man doch zu einem rückportierten Paket Octave?
Es sind ein paar wenige Anpassungen nötig damit die Binärpakete gebaut werden können. Folgender Diff zeigt die Änderungen die ich hier lokal durchgeführt habe um einen Backport bauen zu können.
Code: Alles auswählen
$ git diff debian/rules debian/changelog
diff --git a/debian/changelog b/debian/changelog
index f1266cb12..ab46c0807 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+octave (5.2.0-2~bpo10+1) buster-backports; urgency=medium
+
+ * Rebuild for buster-backports.
+
+ -- Hanz Dampf <bill.gates@meine-domain.org> Sun, 25 Oct 2020 06:38:25 +0100
+
octave (5.2.0-3) unstable; urgency=medium
* Rename /etc/octave.conf to /etc/octaverc, for consistency with upstream
diff --git a/debian/rules b/debian/rules
index c2de09cb8..478ea767d 100755
--- a/debian/rules
+++ b/debian/rules
@@ -109,3 +109,5 @@ override_dh_makeshlibs:
# Make liboctaveN provide the virtual package octave-abi-MM
override_dh_gencontrol:
dh_gencontrol -- -Voctave-abi:Provides=octave-abi-$(API_VERSION)
+
+override_dh_dwz:
Und, ganz wichtig, zusätzlich benötigt man auch buster-backports in den Paketquellen da eben einige andere Abhängigkeiten in Buster schon zu alt sind!