«Dpkg-source: modifications non représentables de la source» lors de la tentative de création d'un package modifié

8

J'ai téléchargé la source dans un package en utilisant:

$ apt-get source gkrellweather

J'ai également vérifié que j'avais les dépendances de compilation:

$ sudo apt-get build-dep gkrellweather

Et j'ai testé qu'il pouvait bien se construire:

$ cd gkrellweather-2.0.8
$ debuild

Il a construit un .debpackage dans le dossier ci-dessus, que j'ai pu installer en utilisant:

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

OK donc tout est en place. Commençons!

J'ai ouvert le code source dans Vim et apporté les modifications que je souhaitais. Ensuite, j'ai essayé de reconstruire:

$ debuild

Mais j'ai eu l'erreur suivante:

...
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

Pourquoi?

joeytwiddle
la source

Réponses:

5

Merci à la réponse de joeytwiddle car elle m'a donné un excellent point de départ dans ma solution à ce problème.

Dans mon projet Python pour lequel j'ai tenté de créer un paquet Debian, j'utilise:

  • pybuild pour préparer le paquet debian avant d'exécuter debuild
  • git pour le contrôle de version
  • PyCharm IDE pour le développement Python

git crée un .gitrépertoire, pybuild crée un .pybuildrépertoire et PyCharm crée un .idearépertoire tout à la racine de mon projet.

Parce que joeytwiddle a mentionné que debuild n'aimait pas un certain fichier (dans son cas, un fichier swp), j'ai senti qu'il avait probablement une correspondance avec les répertoires cachés. J'ai découvert que pour git, vous pouvez le faire: debuild -iet il ignore les répertoires de contrôle de version pour les répertoires pybuild et idea, je n'ai pas encore trouvé une autre option. Donc , pour ma solution, je copiais sur mon projet dans un répertoire vide, supprimé .git, .ideaet les .pybuildrépertoires et le succès!

lévibostian
la source
3
-iest transmis debuildà dpkg-buildpackagepuis à dpkg-source, dont la page de manuel indique qu'une expression régulière peut être fournie. Sans test, je suppose que cela -i'(^|/)\.(git|idea|pybuild)($|/)'pourrait fonctionner pour vous.
joeytwiddle
3

Cela m'a fait trébucher plus d'une fois auparavant. Parfois, je pensais que la raison des erreurs de debuild après avoir changé la source était qu'après que la source a été changée, la signature des responsables du paquet (approbation) n'est plus valide pour cette source.

Mais en fait, dans ce cas, la réponse était simple:

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

Le problème est que Vim a créé un fichier swafile et debuildn'a pas aimé ça!

La solution était simple: supprimez le fichier d'échange, puis la construction peut fonctionner:

$ rm ./.gkrellweather.c.swp
$ debuild
joeytwiddle
la source