Làm thế nào tôi có thể ký hợp lệ một gói tôi đã sửa đổi và biên dịch lại?


20

Tôi đã chạy dpkg-buildpackagesau khi nhận được một apt-get source nginxphiên bản backport của nginx và sửa đổi debian/rulesđể bao gồm mô-đun uwsgi. Kết quả cuối cùng của lệnh là:

dpkg-deb: building package `nginx' in `../nginx_0.7.67-3~bpo50+1_i386.deb'.
dpkg-deb: building package `nginx-dbg' in `../nginx-dbg_0.7.67-3~bpo50+1_i386.deb'.
 signfile nginx_0.7.67-3~bpo50+1.dsc
gpg: keyring `/home/shogun/.gnupg/secring.gpg' created
gpg: skipped "Faidon Liambotis <paravoid@debian.org>": secret key not available
gpg: [stdin]: clearsign failed: secret key not available

 dpkg-genchanges  >../nginx_0.7.67-3~bpo50+1_i386.changes
dpkg-genchanges: warning: the current version (0.7.67-3~bpo50+1) is smaller than the previous one (0.7.67-3)
dpkg-genchanges: not including original source code in upload
dpkg-buildpackage: binary and diff upload (original source NOT included)
dpkg-buildpackage: warning: Failed to sign .dsc and .changes file

Nó phàn nàn rằng vì tôi không phải là người duy trì gói ban đầu, khóa của tôi không khớp.

Điều này có thực sự cần thiết không và nếu vậy làm thế nào tôi có thể khiến nó sử dụng các phím của mình để thực hiện khớp gpg?

Câu trả lời:


32

Các gói Debian ký PGP là không cần thiết nếu bạn xây dựng chúng để sử dụng riêng. Đây chỉ là phương thức xác thực phổ biến cho các nhà phát triển Debian (chính thức) khi họ tải các gói mới vào nhánh "không ổn định" của Debian.

Để tránh thông báo lỗi, chỉ cần sử dụng:

dpkg-buildpackage -uc -us

(xem thêm trang chủ của dpkg-buildpackage)


Tôi chỉ nhìn vào thư mục mẹ và có vẻ như nó không tạo ra các tệp .deb đó dựa trên ngày sửa đổi từ đó ls -al. Nó không thể tạo ra chúng vì xác minh thất bại của gpg, phải không? Có nghĩa với lệnh mới của bạn, nó nên tạo ra chúng? Hay là tôi nhầm?
meder omuraliev

6

Khi bạn tạo một phiên bản khác của gói (như bạn đã làm, vì bạn đã thay đổi quy tắc xây dựng), bạn thực sự nên thêm một mục thay đổi. Bằng cách đó, gói của bạn sẽ có số phiên bản khác (vì vậy bạn sẽ biết ngay rằng đó không phải là gói tiêu chuẩn từ bản phân phối) và bạn sẽ có dấu vết về những gì bạn đã thay đổi.

Chỉnh sửa debian/changelogvà thêm một mục bắt chước định dạng của các mục hiện có. Hẹn hò từ hôm nay và chọn số phiên bản like 0.7.67-3~bpo50+meder1(bạn muốn một cái gì đó cho dpkg --compare-versionsbiết phiên bản của bạn mới hơn). Đặt địa chỉ email của bạn như là người duy trì; bằng cách đó, bạn có một dấu hiệu rõ ràng rằng đây là gói bạn đã sửa đổi và dpkg-buildpackagesẽ yêu cầu mật khẩu GPG của bạn.

Nếu bạn là người dùng Emacs, hãy cài đặt dpkg-dev-elgói và sử dụng các lệnh C-c C-aC-c C-cđể thêm và hoàn thiện mục nhập thay đổi của bạn.


5

Mặc dù việc ký một gói là không cần thiết và các -uc -ustùy chọn có thể được sử dụng để tránh bước đó, nhưng cũng có thể hữu ích khi ký một gói, đặc biệt là nếu những người khác sẽ sử dụng gói đó, hoặc bạn sẽ gửi nó qua các đường dẫn liên lạc không an toàn. Và nó không khó chút nào.

Để tạo chữ ký tốt, hãy xem trang hướng dẫn sử dụng dpkg-buildpackage . Theo mặc định, nó ký các gói với gpg. Từ các thông báo lỗi được in, có vẻ như bạn chưa tạo khóa gpg. Xem ví dụ: GnuPrivacyGuardHowto - Tài liệu Ubuntu cộng đồng để biết một số hướng dẫn và nền tảng.

Như @Gilles lưu ý, bạn cũng nên thay đổi số phiên bản gói thông qua tệp thay đổi và cung cấp địa chỉ email cho khóa gpg bạn sẽ sử dụng. Một cách dễ dàng để làm điều đó là chỉ cần chạy dch --local foolệnh, trong đó "foo" là một từ khóa để thay đổi. Nếu bạn thực sự không muốn làm điều đó, và cần phải xác định một nhà bảo trì hoặc tải lên tên / địa chỉ, hoặc một phím cụ thể khác nhau được sử dụng khi ký hợp đồng, bạn cũng có thể sử dụng -m, -ehoặc -ktùy chọn khi xây dựng.

Xem Cách xây dựng lại các gói Debian để biết thêm mẹo.

Phần khó khăn xuất hiện khi ai đó đang cố gắng quyết định xem một gói nhất định có được ký bởi người mà họ tin tưởng hay không. Kiểm tra trang web PGP của niềm tin để giải quyết các vấn đề tinh tế liên quan.

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.