Nguồn dpkg-nguồn: những thay đổi không thể thấy được đối với nguồn đó khi cố gắng gỡ lỗi một gói đã sửa đổi


8

Tôi đã tải nguồn về một gói bằng cách sử dụng:

$ apt-get source gkrellweather

Tôi cũng đảm bảo rằng tôi có các phụ thuộc biên dịch:

$ sudo apt-get build-dep gkrellweather

Và tôi đã thử nghiệm rằng nó có thể xây dựng tốt:

$ cd gkrellweather-2.0.8
$ debuild

Nó đã xây dựng một .debgói trong thư mục trên mà tôi có thể cài đặt bằng cách sử dụng:

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

OK để mọi thứ được đúng chỗ. Bắt đầu nào!

Tôi đã mở mã nguồn trong Vim và thực hiện một số thay đổi tôi muốn. Sau đó, tôi đã cố gắng xây dựng lại:

$ debuild

Nhưng tôi đã nhận được lỗi sau:

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

Tại sao?

Câu trả lời:


5

Cảm ơn câu trả lời của joeytwiddle vì nó đã cho tôi một nơi tuyệt vời để bắt đầu giải pháp cho vấn đề này.

Trong dự án Python của tôi mà tôi đã cố gắng tạo gói debian cho, tôi đang sử dụng:

  • pybuild để chuẩn bị gói debian trước khi chạy debuild
  • git để kiểm soát phiên bản
  • IDE PyCharm để phát triển Python

git tạo một .gitthư mục, pybuild tạo một .pybuildthư mục và PyCharm tạo một .ideathư mục tất cả trong thư mục gốc của dự án của tôi.

Bởi vì joeytwiddle đã đề cập rằng debuild không thích một tệp nào đó (trong trường hợp của anh ta là tệp swp) nên tôi cảm thấy nó có thể phù hợp với các thư mục ẩn. Tôi phát hiện ra rằng đối với git, bạn có thể làm: debuild -ivà nó bỏ qua các thư mục kiểm soát phiên bản đối với các thư mục pybuild và ý tưởng, tôi chưa tìm thấy tùy chọn nào khác. Vì vậy, giải pháp của tôi, tôi sao chép trên dự án của tôi vào một thư mục trống, xóa .git, .idea.pybuildthư mục và thành công!


3
-iđược thông qua thông qua debuildđể dpkg-buildpackagerồi đến dpkg-source, có trang man nói rằng một regexp có thể được cung cấp. Nếu không thử nghiệm, tôi đoán -i'(^|/)\.(git|idea|pybuild)($|/)'có thể làm việc cho bạn.
joeytwiddle

3

Điều này đã tăng gấp ba lần trước đây. Đôi khi tôi nghĩ lý do cho các lỗi gỡ lỗi sau khi thay đổi nguồn là vì sau khi nguồn được thay đổi, chữ ký của người bảo trì gói (đăng xuất) không còn hiệu lực đối với nguồn đó.

Nhưng thực sự trong trường hợp này, câu trả lời rất đơn giản:

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

Vấn đề là Vim đã tạo ra một swafile , và debuildkhông như thế!

Giải pháp rất đơn giản: loại bỏ tệp hoán đổi, và sau đó tòa nhà có thể hoạt động:

$ rm ./.gkrellweather.c.swp
$ debuild
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.