Como assinar corretamente um pacote que modifiquei e recompilei?


20

Corri dpkg-buildpackagedepois de obter uma apt-get source nginxversão de backports do nginx e modificar debian/rulespara incluir o módulo uwsgi. Os últimos resultados do comando foram:

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

Ele reclama que, por não ser o mantenedor original do pacote, minha chave não correspondeu.

Isso é realmente necessário? Em caso afirmativo, como posso usar minhas chaves para fazer a correspondência de gpg?

Respostas:


32

Pacotes Debian que assinam PGP não são necessários se você os construiu para seu uso privado. É apenas o método de autenticação comum para desenvolvedores Debian (oficiais) quando eles carregam novos pacotes no ramo "instável" do Debian.

Para evitar a mensagem de erro, basta usar:

dpkg-buildpackage -uc -us

(veja também a página de manual do dpkg-buildpackage)


Eu apenas olhei para o diretório pai e parece que ele não criou esses arquivos .deb com base nas datas de modificação ls -al. Falha ao criá-los devido à falha na verificação do gpg, certo? Significado com seu novo comando, ele deve criá-los? Ou estou enganado?
meder omuraliev

6

Ao criar uma versão diferente de um pacote (como você fez, desde que alterou as regras de compilação), você deve realmente adicionar uma entrada no registro de alterações. Dessa forma, seu pacote terá um número de versão diferente (para que você saiba imediatamente que não é o pacote padrão da distribuição) e terá um rastro do que mudou.

Edite debian/changeloge adicione uma entrada imitando o formato das entradas existentes. Data de hoje e escolha um número de versão like 0.7.67-3~bpo50+meder1(você deseja algo que dpkg --compare-versionsdiga que sua versão é mais recente). Coloque seu endereço de email como mantenedor; Dessa forma, você tem uma indicação clara de que este é um pacote que você modificou e dpkg-buildpackagesolicitará sua senha do GPG.

Se você é um usuário do Emacs, instale o dpkg-dev-elpacote e use os comandos C-c C-ae C-c C-cpara adicionar e finalizar sua entrada no registro de alterações.


5

Embora a assinatura de um pacote não seja necessária e as -uc -usopções possam ser usadas para evitar essa etapa, também pode ser útil assinar um pacote, especialmente se outros o usarem, ou você o enviará por caminhos de comunicação inseguros. E não é nada difícil.

Para gerar uma boa assinatura, consulte a página de manual do dpkg-buildpackage . Por padrão, assina pacotes com gpg. A partir das mensagens de erro impressas, parece que você simplesmente ainda não havia gerado uma chave gpg. Veja, por exemplo, GnuPrivacyGuardHowto - Documentação da Comunidade Ubuntu para obter algumas instruções e informações.

Como observa o @Gilles, você também deve alterar o número da versão do pacote por meio do arquivo changelog e fornecer o endereço de e-mail da chave gpg que você usará. Uma maneira fácil de fazer isso é simplesmente executar o dch --local foocomando, onde "foo" é uma palavra-chave para a alteração. Se você realmente não quer fazer isso, e necessidade de especificar a / endereço, ou uma chave específica mantenedor ou Uploader nome diferente para ser usado quando assinatura, você também pode usar o -m, -eou -kopção ao construir.

Veja Como reconstruir pacotes Debian para mais dicas.

A parte complicada ocorre quando alguém está tentando decidir se um determinado pacote é assinado por alguém em quem confia. Confira a PGP web of trust para lidar com os problemas sutis envolvidos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.