"Dpkg-source: cambios no representables en la fuente" cuando se intenta crear un paquete modificado

8

Descargué la fuente a un paquete usando:

$ apt-get source gkrellweather

También me aseguré de tener las dependencias de compilación:

$ sudo apt-get build-dep gkrellweather

Y probé que podría construir bien:

$ cd gkrellweather-2.0.8
$ debuild

Construyó un .debpaquete en la carpeta anterior, que pude instalar usando:

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

Bien, entonces todo está en su lugar. ¡Empecemos!

Abrí el código fuente en Vim e hice algunos cambios que quería. Luego intenté reconstruir:

$ debuild

Pero recibí el siguiente error:

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

¿Por qué?

joeytwiddle
fuente

Respuestas:

5

Gracias a la respuesta de joeytwiddle, ya que me dio un gran lugar para comenzar en mi solución a este problema.

En mi proyecto de Python para el que intenté crear un paquete de Debian, estoy usando:

  • pybuild para preparar el paquete debian antes de ejecutar debuild
  • git para control de versiones
  • PyCharm IDE para el desarrollo de Python

git crea un .gitdirectorio, pybuild crea un .pybuilddirectorio y PyCharm crea un .ideadirectorio todo en la raíz de mi proyecto.

Como joeytwiddle mencionó que a debuild no le gustaba un determinado archivo (en su caso, un archivo swp), entonces sentí que probablemente encajaba con los directorios ocultos. Descubrí que para git, puedes hacer: debuild -ie ignora los directorios de control de versiones para pybuild y los directorios de ideas, todavía no he encontrado otra opción. Así que para mi solución, he copiado sobre mi proyecto a un directorio en blanco, borrado .git, .ideay .pybuilddirectorios y éxito!

levibostiano
fuente
3
-ise pasa debuilda dpkg-buildpackagey luego a dpkg-source, cuya página de manual dice que se puede proporcionar una expresión regular. Sin pruebas, supongo que -i'(^|/)\.(git|idea|pybuild)($|/)'podría funcionar para usted.
joeytwiddle
3

Esto me ha hecho tropezar más de una vez. A veces pensé que la razón de los errores de eliminación de errores después de cambiar la fuente era que después de que la fuente ha sido cambiada, la firma del mantenedor del paquete (cierre de sesión) ya no es válida para esa fuente.

Pero en realidad en este caso la respuesta fue simple:

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

El problema es que Vim había creado un archivo swaf , ¡y debuildno le gustó eso!

La solución fue simple: elimine el archivo de intercambio, y luego construir puede funcionar:

$ rm ./.gkrellweather.c.swp
$ debuild
joeytwiddle
fuente