“Dpkg-source: alterações irrepresentáveis ​​na fonte” ao tentar reconstruir um pacote modificado

8

Eu baixei a fonte para um pacote usando:

$ apt-get source gkrellweather

Também verifiquei se tinha as dependências de compilação:

$ sudo apt-get build-dep gkrellweather

E eu testei que ele poderia criar muito bem:

$ cd gkrellweather-2.0.8
$ debuild

Ele criou um .debpacote na pasta acima, que eu poderia instalar usando:

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

OK, então está tudo no lugar. Vamos começar!

Abri o código fonte no Vim e fiz algumas alterações que eu queria. Então eu tentei reconstruir:

$ debuild

Mas eu recebi o seguinte erro:

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

Respostas:

5

Obrigado à resposta de joeytwiddle, pois me deu um ótimo lugar para começar minha solução para esse problema.

No meu projeto Python para o qual tentei criar um pacote debian, estou usando:

  • pybuild para preparar o pacote debian antes de executar o debuild
  • git para controle de versão
  • IDE PyCharm para o desenvolvimento Python

O git cria um .gitdiretório, o pybuild cria um .pybuilddiretório e o PyCharm cria um .ideadiretório na raiz do meu projeto.

Como joeytwiddle mencionou que debuild não gostou de um determinado arquivo (no caso dele, um arquivo swp), então eu senti que provavelmente se encaixava nos diretórios ocultos. Eu descobri que, para o git, você pode fazer: debuild -ie ignora os diretórios de controle de versão dos diretórios pybuild e idea, ainda não encontrei outra opção. Para a minha solução, eu copiado sobre o meu projeto para um diretório em branco, excluídas .git, .ideae .pybuilddiretórios e sucesso!

levibostian
fonte
3
-ié passado debuildpara dpkg-buildpackagee depois para dpkg-source, cuja página de manual diz que um regexp pode ser fornecido. Sem testes, acho que -i'(^|/)\.(git|idea|pybuild)($|/)'pode funcionar para você.
Joeytwiddle
3

Isso me tropeçou mais de uma vez antes. Às vezes, pensei que o motivo dos erros de reconstrução após alterar a fonte era que, depois que a fonte foi alterada, a assinatura dos mantenedores de pacotes (assinatura) não é mais válida para essa fonte.

Mas, na verdade, neste caso, a resposta foi simples:

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

O problema é que o Vim criou um swafile e debuildnão gostou disso!

A solução foi simples: remova o swapfile e, em seguida, a construção pode funcionar:

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