“Dpkg-source: perubahan yang tidak dapat direpresentasikan ke sumber” ketika mencoba untuk membasmi paket yang dimodifikasi

8

Saya mengunduh sumber ke sebuah paket menggunakan:

$ apt-get source gkrellweather

Saya juga memastikan saya memiliki dependensi kompilasi:

$ sudo apt-get build-dep gkrellweather

Dan saya menguji bahwa itu dapat membangun dengan baik:

$ cd gkrellweather-2.0.8
$ debuild

Itu membangun .debpaket di folder di atas, yang bisa saya instal menggunakan:

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

OK jadi semuanya sudah di tempat. Ayo mulai!

Saya membuka kode sumber di Vim dan membuat beberapa perubahan yang saya inginkan. Kemudian saya mencoba membangun kembali:

$ debuild

Tapi saya mendapat kesalahan berikut:

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

Mengapa?

joeytwiddle
sumber

Jawaban:

5

Terima kasih atas jawaban joeytwiddle karena memberi saya tempat yang bagus untuk memulai solusi saya untuk masalah ini.

Dalam proyek Python saya yang saya coba buat paket debian untuk, saya menggunakan:

  • pybuild untuk menyiapkan paket debian sebelum menjalankan debuild
  • git untuk kontrol versi
  • IDE PyCharm untuk pengembangan Python

git membuat .gitdirektori, pybuild membuat .pybuilddirektori dan PyCharm membuat .ideadirektori semua di root proyek saya.

Karena joeytwiddle menyebutkan bahwa debuild tidak suka file tertentu (dalam kasusnya file swp) maka saya merasa mungkin itu cocok dengan direktori tersembunyi. Saya menemukan bahwa untuk git, Anda dapat melakukannya: debuild -idan mengabaikan direktori kontrol versi untuk direktori pybuild dan ide, saya belum menemukan opsi lain. Jadi untuk solusi saya, saya disalin proyek saya ke direktori kosong, dihapus .git, .ideadan .pybuilddirektori dan sukses!

levibostian
sumber
3
-iakan diteruskan debuildke dpkg-buildpackagedan kemudian ke dpkg-source, yang halaman manualnya mengatakan bahwa regexp dapat disediakan. Tanpa pengujian, saya kira -i'(^|/)\.(git|idea|pybuild)($|/)'mungkin bekerja untuk Anda.
joeytwiddle
3

Ini telah membuat saya tersandung lebih dari sekali sebelumnya. Kadang-kadang saya berpikir alasan untuk kesalahan debuild setelah mengubah sumber adalah bahwa setelah sumber telah diubah, tanda tangan pengelola paket (signoff) tidak lagi berlaku untuk sumber itu.

Tetapi sebenarnya dalam hal ini jawabannya sederhana:

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

Masalahnya adalah bahwa Vim telah menciptakan swafile , dan debuildtidak suka itu!

Solusinya sederhana: hapus swapfile, dan kemudian bangunan dapat bekerja:

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