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.

Matthew Scharley
fonte

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"
}
Torian
fonte
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.

Ignacio Vazquez-Abrams
fonte
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.

TNT
fonte