“ dpkg-source: การเปลี่ยนแปลงที่ไม่สามารถแสดงได้กับแหล่งที่มา” เมื่อพยายาม debuild แพ็คเกจที่แก้ไข


8

ฉันดาวน์โหลดซอร์สไปยังแพ็คเกจโดยใช้:

$ apt-get source gkrellweather

ฉันยังทำให้แน่ใจว่าฉันมีการพึ่งพาการรวบรวม:

$ sudo apt-get build-dep gkrellweather

และฉันทดสอบว่ามันสามารถสร้างได้ดี:

$ cd gkrellweather-2.0.8
$ debuild

มันสร้าง.debแพ็คเกจในโฟลเดอร์ด้านบนซึ่งฉันสามารถติดตั้งโดยใช้:

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

ตกลงเพื่อให้ทุกอย่างอยู่ในสถานที่ มาเริ่มกันเลย!

ฉันเปิดซอร์สโค้ดเป็นกลุ่มและทำการเปลี่ยนแปลงบางอย่างที่ฉันต้องการ จากนั้นฉันพยายามสร้างใหม่:

$ debuild

แต่ฉันได้รับข้อผิดพลาดต่อไปนี้:

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

ทำไม?

คำตอบ:


5

ขอบคุณคำตอบของ joeytwiddle เพราะมันเป็นจุดเริ่มต้นที่ยอดเยี่ยมสำหรับฉันในการแก้ไขปัญหานี้

ในโครงการ Python ของฉันที่ฉันพยายามสร้างแพ็คเกจ debian สำหรับฉันกำลังใช้:

  • สร้างเพื่อเตรียมแพ็คเกจ debian ก่อนเรียกใช้ debuild
  • git สำหรับการควบคุมเวอร์ชัน
  • PyCharm IDE สำหรับการพัฒนา Python

git สร้าง.gitไดเรกทอรี pybuild สร้าง.pybuildไดเรกทอรีและ PyCharm สร้าง.ideaไดเรกทอรีทั้งหมดในรากของโครงการของฉัน

เพราะ joeytwiddle กล่าวว่า debuild ไม่ชอบไฟล์ที่แน่นอน (ในกรณีของเขาเป็นไฟล์ swp) จากนั้นฉันรู้สึกว่ามันน่าจะพอดีกับไดเรกทอรีที่ซ่อนอยู่ ฉันพบว่าสำหรับ git คุณสามารถทำได้: debuild -iและมันไม่สนใจไดเรคทอรี่การควบคุมเวอร์ชันสำหรับไดเรคทอรี pybuild และไอเดียฉันยังไม่พบตัวเลือกอื่น ดังนั้นวิธีการแก้ปัญหาของฉันฉันคัดลอกมาโครงการของฉันไปยังไดเรกทอรีที่ว่างเปล่า, ลบ.git, .ideaและ.pybuildไดเรกทอรีและประสบความสำเร็จ!


3
-iได้รับการส่งผ่านdebuildไปยังdpkg-buildpackageและจากนั้นไปdpkg-sourceที่หน้าคนบอกว่า regexp สามารถให้ หากไม่มีการทดสอบฉันเดาว่า-i'(^|/)\.(git|idea|pybuild)($|/)'อาจเหมาะกับคุณ
joeytwiddle

3

เรื่องนี้ทำให้ฉันสะดุดมากกว่าหนึ่งครั้ง บางครั้งฉันคิดว่าเหตุผลสำหรับข้อผิดพลาด debuild หลังจากเปลี่ยนแหล่งที่มาคือว่าหลังจากที่มีการเปลี่ยนแปลงแหล่งที่มาลายเซ็นแพคเกจบำรุงรักษา (signoff) ไม่ถูกต้องสำหรับแหล่งที่มานั้น

แต่จริงๆแล้วในกรณีนี้คำตอบนั้นง่าย:

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

ปัญหาคือVim สร้าง swafileและdebuildไม่ชอบมัน!

วิธีแก้ปัญหานั้นง่าย: ลบ swapfile แล้วการสร้างสามารถทำงานได้:

$ rm ./.gkrellweather.c.swp
$ debuild
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.