"Dpkg-source: nicht darstellbare Änderungen an der Quelle" beim Versuch, ein geändertes Paket zu debuildieren


8

Ich habe die Quelle in ein Paket heruntergeladen, indem ich:

$ apt-get source gkrellweather

Ich habe auch sichergestellt, dass ich die Kompilierungsabhängigkeiten habe:

$ sudo apt-get build-dep gkrellweather

Und ich habe getestet, dass es gut bauen kann:

$ cd gkrellweather-2.0.8
$ debuild

Im .debobigen Ordner wurde ein Paket erstellt, das ich installieren konnte mit:

$ sudo dpkg -i ../gkrellweather*.deb

OK, also ist alles an Ort und Stelle. Lass uns anfangen!

Ich habe den Quellcode in Vim geöffnet und einige Änderungen vorgenommen, die ich wollte. Dann habe ich versucht wieder aufzubauen:

$ debuild

Aber ich habe folgenden Fehler bekommen:

...
dh_clean: Compatibility levels before 5 are deprecated (level 4 in use)
 dpkg-source -b gkrellweather-2.0.8
dpkg-source: warning: no source format specified in debian/source/format, see dpkg-source(1)
dpkg-source: info: using source format `1.0'
dpkg-source: info: building gkrellweather using existing gkrellweather_2.0.8.orig.tar.gz
dpkg-source: info: building gkrellweather in gkrellweather_2.0.8-2.diff.gz
dpkg-source: error: cannot represent change to gkrellweather-2.0.8/.gkrellweather.c.swp: binary file contents changed
dpkg-source: warning: the diff modifies the following upstream files: 
 GrabWeather
 Makefile
 gkrellweather.c
dpkg-source: info: use the '3.0 (quilt)' format to have separate and documented changes to upstream files, see dpkg-source(1)
dpkg-source: unrepresentable changes to source
dpkg-buildpackage: error: dpkg-source -b gkrellweather-2.0.8 gave error exit status 1
debuild: fatal error at line 1357:
dpkg-buildpackage -rfakeroot -D -us -uc failed

Warum?

Antworten:


5

Dank der Antwort von joeytwiddle, die mir einen großartigen Ausgangspunkt für meine Lösung dieses Problems gab.

In meinem Python-Projekt, für das ich versucht habe, ein Debian-Paket zu erstellen, verwende ich:

  • pybuild, um das Debian-Paket vorzubereiten, bevor Debuild ausgeführt wird
  • Git für die Versionskontrolle
  • PyCharm IDE für die Python-Entwicklung

git erstellt ein .gitVerzeichnis, pybuild erstellt ein .pybuildVerzeichnis und PyCharm erstellt ein .ideaVerzeichnis im Stammverzeichnis meines Projekts.

Da joeytwiddle erwähnte, dass debuild eine bestimmte Datei (in seinem Fall eine swp-Datei) nicht mochte, hatte ich das Gefühl, dass sie wahrscheinlich zu den versteckten Verzeichnissen passte. Ich habe herausgefunden, dass Sie für git debuild -iFolgendes tun können: und Versionskontrollverzeichnisse werden ignoriert, da ich für die Pybuild- und Ideenverzeichnisse noch keine andere Option gefunden habe. Also für meine Lösung, ich über mein Projekt in ein leeres Verzeichnis kopiert, gelöscht .git, .ideaund .pybuildVerzeichnisse und Erfolg!


3
-iwird durchlaufen , debuildum dpkg-buildpackagedann zu dpkg-source, dessen Mann Seite sagt , dass ein regulärer Ausdruck zur Verfügung gestellt werden kann. Ohne Tests -i'(^|/)\.(git|idea|pybuild)($|/)'könnte ich für Sie arbeiten.
Joeytwiddle

3

Das hat mich mehr als einmal gestolpert. Manchmal dachte ich, der Grund für Debuild-Fehler nach dem Ändern der Quelle sei, dass nach dem Ändern der Quelle die Signatur (Signoff) des Paketverwalters für diese Quelle nicht mehr gültig ist.

Aber in diesem Fall war die Antwort einfach:

dpkg-source: error: cannot represent change to gkrellweather-2.0.8/.gkrellweather.c.swp: binary file contents changed

Das Problem ist, dass Vim eine Swafile erstellt hatte und debuilddas nicht mochte!

Die Lösung war einfach: Entfernen Sie die Auslagerungsdatei, und dann kann das Erstellen funktionieren:

$ rm ./.gkrellweather.c.swp
$ debuild
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.