Bagaimana saya bisa menandatangani paket yang saya modifikasi dan kompilasi dengan benar?

20

Saya berlari dpkg-buildpackagesetelah mendapatkan apt-get source nginxversi backports dari nginx dan memodifikasi debian/rulesuntuk memasukkan modul uwsgi. Hasil terakhir dari perintah adalah:

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 <[email protected]>": 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

Mengeluh bahwa karena saya bukan pengelola asli paket, kunci saya tidak cocok.

Apakah ini benar-benar perlu dan jika demikian bagaimana saya bisa membuatnya menggunakan kunci saya untuk melakukan pencocokan gpg?

meder omuraliev
sumber

Jawaban:

32

Paket Debian yang menandatangani PGP tidak diperlukan jika Anda membuatnya untuk penggunaan pribadi Anda. Ini hanya metode otentikasi umum untuk pengembang Debian (resmi) ketika mereka mengunggah paket baru ke cabang "tidak stabil" Debian.

Untuk menghindari pesan kesalahan cukup gunakan:

dpkg-buildpackage -uc -us

(lihat juga halaman manual dpkg-buildpackage)

Signum
sumber
Saya baru saja melihat direktori induk dan sepertinya tidak membuat file deb tersebut berdasarkan tanggal modifikasi dari ls -al. Gagal membuat mereka karena gagal verifikasi gpg, kan? Berarti dengan perintah baru Anda, itu harus membuatnya? Atau saya salah?
meder omuraliev
6

Ketika Anda membuat versi berbeda dari sebuah paket (seperti yang Anda lakukan, sejak Anda mengubah aturan build), Anda harus benar-benar menambahkan entri changelog. Dengan begitu, paket Anda akan memiliki nomor versi yang berbeda (sehingga Anda akan segera tahu bahwa itu bukan paket standar dari distribusi), dan Anda akan memiliki jejak dari apa yang Anda ubah.

Edit debian/changelog, dan tambahkan entri yang meniru format entri yang ada. Tanggal mulai dari hari ini, dan pilih nomor versi like 0.7.67-3~bpo50+meder1(Anda menginginkan sesuatu yang dpkg --compare-versionsmengatakan versi Anda lebih baru). Masukkan alamat email Anda sebagai pengelola; dengan cara itu, Anda memiliki indikasi yang jelas bahwa ini adalah paket yang Anda modifikasi, dan dpkg-buildpackageakan meminta frasa sandi GPG Anda.

Jika Anda pengguna Emacs, instal dpkg-dev-elpaket, dan gunakan perintah C-c C-adan C-c C-cuntuk menambah dan menyelesaikan entri changelog Anda.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
5

Meskipun menandatangani paket tidak diperlukan, dan -uc -usopsi dapat digunakan untuk menghindari langkah itu, juga dapat membantu untuk menandatangani paket, terutama jika orang lain akan menggunakannya, atau Anda akan mengirimkannya melalui jalur komunikasi yang tidak aman. Dan itu tidak sulit sama sekali.

Untuk menghasilkan tanda tangan yang baik, lihat halaman manual untuk dpkg-buildpackage . Secara default ia menandatangani paket dengan gpg. Dari pesan kesalahan yang dicetaknya, sepertinya Anda belum membuat kunci gpg. Lihat misalnya GnuPrivacyGuardHowto - Dokumentasi Komunitas Ubuntu untuk beberapa instruksi dan latar belakang.

Sebagai @Gilles mencatat, Anda juga harus mengubah nomor versi paket melalui file changelog, dan memberikan alamat email untuk kunci gpg yang akan Anda gunakan. Cara mudah untuk melakukannya adalah dengan menjalankan dch --local fooperintah, di mana "foo" adalah kata kunci untuk perubahan. Jika Anda benar-benar tidak ingin melakukan itu, dan perlu menentukan nama / alamat pengelola atau pengunggah yang berbeda, atau kunci spesifik yang akan digunakan saat menandatangani, Anda juga dapat menggunakan -m, -eatau -kopsi saat membuat.

Lihat Bagaimana cara membangun kembali paket Debian untuk tips lebih lanjut.

Bagian yang sulit datang ketika seseorang mencoba memutuskan apakah paket yang diberikan ditandatangani oleh seseorang yang mereka percayai. Lihatlah web kepercayaan PGP untuk menangani masalah halus yang terlibat.

nealmcb
sumber