Dpkg

如何正確簽署我修改和重新編譯的包?

  • March 2, 2012

dpkg-buildpackage在獲得一個apt-get source nginxnginx 的反向移植版本並修改debian/rules以包含 uwsgi 模組後執行。該命令的最後結果是:

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

它抱怨因為我不是包的原始維護者,所以我的密鑰不匹配。

這真的有必要嗎?如果是這樣,我怎樣才能讓它使用我的密鑰進行 gpg 匹配?

如果您為自己的私人使用而建構它們,則不需要 PGP 簽名 Debian 軟體包。這只是(官方)Debian 開發人員在將新軟體包上傳到 Debian“不穩定”分支時常用的身份驗證方法。

為避免錯誤消息,只需使用:

dpkg-buildpackage -uc -us

(另見 dpkg-buildpackage 的手冊頁)

當您製作不同版本的包時(就像您所做的那樣,因為您更改了建構規則),您確實應該添加一個更改日誌條目。這樣,您的包將具有不同的版本號(因此您會立即知道它不是發行版中的標準包),並且您將跟踪您所做的更改。

編輯debian/changelog,並添加一個模仿現有條目格式的條目。從今天開始日期,並選擇一個版本號like 0.7.67-3~bpo50+meder1(你想要一些dpkg --compare-versions表明你的版本更新的東西)。將您的電子郵件地址作為維護者;這樣,您就可以清楚地表明這是您修改的軟體包,並且dpkg-buildpackage會詢問您的 GPG 密碼。

如果您是 Emacs 使用者,請安裝該dpkg-dev-el軟體包,然後使用C-c C-aC-c C-c命令添加和完成您的更改日誌條目。

引用自:https://serverfault.com/questions/191785