Ich möchte ein Paket zur Installation der neuesten Version vonpgn-Extrakt. Ich habe pgn-extract.tgz
das Archiv heruntergeladen und entpackt. Aber weiter kann ich mir das nicht vorstellen, da ich keinerlei Erfahrung mit der Konzeption von Paketen habe.
Antwort1
Der einfachste Weg (für einige Werte von „am einfachsten“) besteht darin, die vorhandenepgn-extract
Paketund verwenden Sie das als Grundlage:
Laden Sie die aktuelle Quelle herunter:
wget ftp://ftp.cs.kent.ac.uk/pub/djb/pgn-extract/pgn-extract.tgz
extrahieren:
tar xf pgn-extract.tgz
Ermitteln Sie die Versionsnummer:
grep Version pgn-extract/index.html
(Ich erhalte „17-38“ und werde das in den folgenden Anweisungen verwenden. Wenn Sie eine neuere Version haben, ersetzen Sie „17“ und „38“ entsprechend.)
Verknüpfen Sie das Tarball mit dem „.orig“-Tarball, das die Debian-Build-Tools erwarten:
ln -s pgn-extract.tgz pgn-extract_17.38.orig.tar.gz
Laden Sie das Quellpaket herunter und extrahieren Sie es:
apt-get source pgn-extract
Kopieren Sie das vorhandene
debian
Verzeichnis in Ihrpgn-extract
Quellverzeichnis:cd pgn-extract cp -a ../pgn-extract-17.21/debian .
Fügen Sie einen Changelog-Eintrag für Ihre Version hinzu, etwa wie
dch -v 17.38-0.1 "New upstream release."
Bauen Sie das neue Paket; wenn hierbei Fehler auftreten, beheben Sie die Paketierung entsprechend und versuchen Sie es erneut:
dpkg-buildpackage -us -uc
In meinem Fall musste ich Folgendes beheben makefile.patch
; dies zeigte sich als Fehler beim Patchen des Codes zu Beginn des Builds:
dpkg-source: info: using source format '3.0 (quilt)'
dpkg-source: info: building pgn-extract using existing ./pgn-extract_17.38.orig.tar.gz
patching file Makefile
Hunk #1 FAILED at 37.
Hunk #2 succeeded at 48 (offset 1 line).
1 out of 2 hunks FAILED
dpkg-source: info: the patch has fuzz which is not allowed, or is malformed
dpkg-source: info: if patch 'makefile.patch' is correctly applied by quilt, use 'quilt refresh' to update it
dpkg-source: error: LC_ALL=C patch -t -F 0 -N -p1 -u -V never -E -b -B .pc/makefile.patch/ --reject-file=- < pgn-extract.orig.ltAFev/debian/patches/makefile.patch gave error exit status 1
dpkg-buildpackage: error: dpkg-source -b pgn-extract gave error exit status 2
Um dies zu beheben, bin ich wie folgt vorgegangen:
Erzwingen Sie die Anwendung des Patches:
export QUILT_PATCHES="debian/patches" quilt push -f
Auschecken der Ablehnungen in
Makefile.rej
und manuelles Anwenden mithilfe eines Editors; mit der aktuellen Version vonpgn-extract
bedeutet das:Suche nach der Linie
# AIX 3.2 Users might like these alternatives
finde die Zeile direkt über diesem Spruch
CC=gcc
Löschen Sie darüber die Zeile mit dem Text
-O3
und ersetzen Sie das\
am Ende der vorherigen Zeile durch$(CPPFLAGS)
, so dass die gesamte Zeile wie folgt endet:-I/usr/local/lib/ansi-include -std=c99 $(CPPFLAGS)
Aktualisieren Sie den Patch:
quilt refresh
Führen Sie den Build erneut aus.
Sie können auch mit dem extrahierten Debian-Quellpaket beginnen und es verwenden, uscan
um das neueste Tarball herunterzuladen und zu verarbeiten. Falls Sie daran interessiert sind, überlasse ich es Ihnen, dies selbst zu untersuchen.