Como posso verificar se uma chave PGP é importada para o RPM?


13

Pode-se importar uma chave com:

rpm --import / caminho / para / chave

Mas como saber depois se você já importou essa chave? Tentar reimportá-lo falhará com um erro e estou tentando evitar isso, pois estou usando o Puppet para instalar a chave.

Respostas:


10

Você pode verificar se uma chave já foi importada usando rpm -qi gpg-pubkey-<version>-<release>. Se estiver instalado, o rpm fornecerá todas as informações sobre ele; caso contrário, ele sairá com um valor de retorno 1, para que você possa adicionar à sua receita de marionetes um unlessparâmetro:

exec { "rpm --import /path/to/package":
  # ...
  unless => "rpm -qi gpg-pubkey-<version>-<release> > /dev/null 2>&1"
}

2
Melhor maneira através de algum código que eu encontrei:KEYFILE=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release; KEYID=$(echo $(gpg --throw-keyids < $KEYFILE)|cut -c11-18|tr [A-Z] [a-z]); rpm -q gpg-pubkey-$KEYID
lsd 06/02

2
O corte o vincula a um layout específico, que não funciona no meu sistema de teste RHEL6. E o gpg agora inclui subchaves, bem como a tecla pub. Então, acabei usandoKEYID=$(gpg --throw-keyids $KEYFILE | sed -n '/^pub/s|^[^/]*/\([[:alnum:]]*\) .*|\1|p' | tr [[:upper:]] [[:lower:]])
dannysauer

5

Cada chave importada adiciona uma entrada rpmdb de gpg-pubkey-<left(hex(fingerprint), 8)>-<encoded import date>. Basta verificar o nome ( gpg-pubkey) e a versão apropriada (os 8 primeiros caracteres da impressão digital da chave em hexadecimal) no rpmdb.


rpm -qi gpg-pubkey-FINGERPRINT-\* > /dev/null 2>&1 (referência, incluindo como obter o FINGERPRINT: robinbowes.com/article.php/20081107174415581 )
Ted Zlatanov

2

Se você deseja apenas verificar se a chave foi importada (sem processar programaticamente essas informações), é possível listar todas as chaves como esta:

rpm -qi gpg-pubkey-\* | grep -E ^Packager

ou para os IDs:

rpm -qi gpg-pubkey-\* | grep -E "^Version  "

Isso pode parecer bastante óbvio para muitos, mas acho que, para alguns, é uma resposta mais direta (pelo menos no título) da pergunta.

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.