"Dpkg-source: modifiche non rappresentabili a source" quando si tenta di debuild un pacchetto modificato


8

Ho scaricato la fonte in un pacchetto usando:

$ apt-get source gkrellweather

Mi sono anche assicurato di avere le dipendenze di compilazione:

$ sudo apt-get build-dep gkrellweather

E ho provato che poteva costruire benissimo:

$ cd gkrellweather-2.0.8
$ debuild

Ha creato un .debpacchetto nella cartella sopra, che ho potuto installare usando:

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

OK, quindi è tutto a posto. Iniziamo!

Ho aperto il codice sorgente in Vim e apportato alcune modifiche che volevo. Quindi ho provato a ricostruire:

$ debuild

Ma ho ricevuto il seguente errore:

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

Perché?

Risposte:


5

Grazie alla risposta di Joeytwiddle in quanto mi ha dato un ottimo punto di partenza nella mia soluzione a questo problema.

Nel mio progetto Python per cui ho tentato di creare un pacchetto debian, sto usando:

  • pybuild per preparare il pacchetto debian prima di eseguire debuild
  • git per il controllo della versione
  • IDE PyCharm per lo sviluppo di Python

git crea una .gitdirectory, pybuild crea una .pybuilddirectory e PyCharm crea una .ideadirectory tutta nella radice del mio progetto.

Perché joeytwiddle ha menzionato che debuild non ha gradito un certo file (nel suo caso un file swp), allora ho sentito che probabilmente si adattava alle directory nascoste. Ho scoperto che per git puoi farlo: debuild -ie ignora le directory di controllo versione per quanto riguarda le directory pybuild e idea, non ho ancora trovato un'altra opzione. Così per la mia soluzione, ho copiato il mio progetto in una directory vuota, cancellato .git, .ideae .pybuildle directory e di successo!


3
-iviene passato attraverso debuildad dpkg-buildpackagee poi dpkg-source, la cui pagina man dice che un espressione regolare può essere fornita. Senza test, credo che -i'(^|/)\.(git|idea|pybuild)($|/)'potrebbe funzionare per te.
joeytwiddle,

3

Questo mi ha fatto inciampare più di una volta. A volte ho pensato che il motivo degli errori debuild dopo aver cambiato l'origine fosse che dopo che l'origine era stata cambiata, la firma dei manutentori del pacchetto (firma) non era più valida per quell'origine.

Ma in realtà in questo caso la risposta era semplice:

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

Il problema è che Vim aveva creato uno swafile e debuildnon gli piaceva!

La soluzione era semplice: rimuovere il file di scambio e quindi la costruzione può funzionare:

$ rm ./.gkrellweather.c.swp
$ debuild
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.