debuild - chave secreta não disponível (chave de outra pessoa)

6

Estou tentando construir o cairo com o debuild.

Chego ao fim e a esta mensagem:

gpg: skipped "Robert Ancell <[email protected]>": secret key not available

Como eu não sou Robert Ancell, isso faz sentido - como faço para usar minha própria chave?

gpg --list-key outputs:
$ gpg --list-key /home/stu/.gnupg/pubring.gpg
 ----------------------------
pub   1024R/2ADA7053 2009-05-04 uid                  Launchpad PPA for Aleksander Morgado

pub   2048R/17F35B46 2015-01-28 uid                  Stuart Axon
<[email protected]> uid                  Launchpad PPA for Stuart
Axon <[email protected]> sub   2048R/B8E8ED59 2015-01-28

e eu tenho env var:

DEBSIGN_KEYID=17F35B46
    
por Stuart Axon 22.02.2016 / 22:29

4 respostas

6
A

debuild pede a chave do usuário que editou o changelog pela última vez. Se você está fazendo o upload para um PPA, então seu pacote deve ser diferente do seu equivalente atualmente nos repositórios e então você deve ter editado o changelog.

Use dch para atualizar a versão e o changelog e, em seguida, reconstrua. debuild irá pedir sua chave. (Se você não tiver certeza de quais números de versão usar, dê uma olhada na ajuda do Launchpad ) p>     

por Seth 23.02.2016 / 15:29
5

Atualmente estou usando o XUbuntu 16.04 "Xenial Xerus" e estava passando pelo mesmo problema: debuild e debsign estavam retornando esse erro chave secreta não disponível , embora eu tenha criado um chave local e pela maneira que eu tinha carregado para o Ubuntu Keyserver , também.

Eu já tinha tentado definir manualmente a minha chave usando a opção -k . Eu também configurei minha chave como minha chave padrão, e também editei o arquivo debian/changelog , entre muitas outras coisas, mas nada funcionou: eu ainda estava recebendo o mesmo erro.

... então percebi que tinha criado minha chave com gpg2 em vez de gpg . Adivinha o que eu fiz?

  • Primeiro, abri uma janela de terminal do shell e renomei o binário gpg:

    sudo mv /usr/bin/gpg /usr/bin/gpg.bak
    
  • Em seguida, criei um link simbólico gpg apontando para o gpg2 binary:

    sudo ln -s /usr/bin/gpg2 /usr/bin/gpg
    

Depois de fazer isso, comandos como debuild -S -sa , debsign some-file_source.changes et cetera finalmente funcionaram.

Não sei exatamente o que há de errado com debuild , debsign , dpkg-buildpackage et cetera, mas tenho a impressão de que eles estão enviando parâmetros para gpg , embora somente gpg2 possa parse ("entenda") tais parâmetros. Assim, criar um link simbólico (para criar um binário falso gpg que realmente execute o binário gpg2) resolve o problema.

Existem maneiras mais elegantes de forçar o debsign a usar gpg2 :

  • Defina a opção -pgpg2 de debsign .
  • Defina DEBSIGN_PROGRAM=gpg2 em /etc/devscripts.conf ou ~/.devscripts .
por Yuri Sucupira 07.09.2016 / 05:17
3

Use a opção -k para informar debuild qual chave usar, por exemplo

debuild -kB57F5641

Observe que não há espaço permitido entre o -k e o ID da chave.

    
por Florian Diesch 22.02.2016 / 22:38
3

Primeiramente, a cada revisão de pacote, você precisa editar o changelog. Esse é um requisito se você fizer alterações no pacote; você pode adicionar esses changelogs com dch , como Seth sugere.

No entanto, se você está simplesmente tentando produzir um pacote que não tem alterações adicionais , você pode simplesmente instalar o pacote, então você não precisa editar o changelog, você simplesmente precisa resolver o problema da chave de assinatura.

  

Eu não acredito que nenhuma das respostas aqui esteja 100% completa. Portanto, vou roubar um pouco de ambos, mas adicionar minha própria sugestão e solução aqui, pois faço isso com o pacote nginx mescla com bastante frequência.

Para citar Seth, debuild determinará a chave com base no que foi o último editor de changelog. Isso é automático, e você precisará atualizar o changelog para usar suas credenciais neles no final da última entrada do changelog.

Como foi dito por Florian, no entanto, você também pode usar a opção -kKEYIDNUM para debuild informar qual tecla assina e impor o uso dessa chave.

E agora, minha solução para os dois problemas, para fazer as coisas assinarem automaticamente com a chave que eu quero assinar com ...

Durante muito tempo tive esse problema sempre que meus antigos discos rígidos morriam no meu sistema anterior. Eu não queria editar o changelog de cada vez, realmente, nem realmente queria passar manualmente a opção -k para debuild .

Por fim, as MOTUs me ajudaram a resolver o problema especificando explicitamente com que chave assinar, apresentando-me a .devscripts , que debuild e outras invocam variáveis de ambiente com as coisas definidas nelas; Isso permitiu que eu adicionasse opções que dpkg-buildpackage , que debuild chama, sempre será anexado.

Portanto, para que a opção -k funcione automaticamente para cada único debuild executado, você pode adicionar isso ao seu arquivo ~/.devscripts e adicionar automaticamente a opção -k da seguinte forma:

DEBUILD_DPKG_BUILDPACKAGE_OPTS="-kABCD1234"

Isso fará com que seja adicionado persistentemente às opções debuild ; Esta é também uma maneira de garantir que sua chave sempre será usada para assinatura.

Isso me ajuda em ambos os uploads do Ubuntu, mas também nos uploads de PPA.

    
por Thomas Ward 23.02.2016 / 15:44