Как я могу убедиться, что ключ PGP импортирован в RPM?


13

Ключ можно импортировать с помощью:

rpm --import / path / to / key

Но как вы можете узнать позже, если вы уже импортировали этот ключ? Попытка реимпортировать его не удастся с ошибкой, и я пытаюсь избежать этого, поскольку я использую Puppet для установки ключа.

Ответы:


10

Вы можете дважды проверить, импортирован ли ключ, используя rpm -qi gpg-pubkey-<version>-<release>. Если он установлен, rpm выдаст вам всю информацию о нем, в противном случае он просто выйдет с возвращаемым значением 1, чтобы вы могли добавить в свой рецепт кукол unlessпараметр:

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

2
Лучший способ пролистать код, который я нашел: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

2
Разрез связывает вас с определенной схемой, которая не работает в моей тестовой системе RHEL6. И gpg теперь включает в себя дополнительные клавиши, а также ключ паба. Итак, я закончил с использованиемKEYID=$(gpg --throw-keyids $KEYFILE | sed -n '/^pub/s|^[^/]*/\([[:alnum:]]*\) .*|\1|p' | tr [[:upper:]] [[:lower:]])
dannysauer

5

Каждый импортированный ключ добавляет запись rpmdb в gpg-pubkey-<left(hex(fingerprint), 8)>-<encoded import date>. Просто проверьте это имя ( gpg-pubkey) и соответствующую версию (первые 8 символов отпечатка ключа в шестнадцатеричном формате) в rpmdb.


rpm -qi gpg-pubkey-FINGERPRINT-\* > /dev/null 2>&1 (ссылка, в том числе, как получить FINGERPRINT: robinbowes.com/article.php/20081107174415581 )
Тед Златанов

2

Если вы просто хотите убедиться, что ключ импортирован (без программной обработки этой информации), вы можете перечислить все ключи следующим образом:

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

или для идентификаторов:

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

Многим это может показаться очевидным, но я полагаю, что для некоторых это более прямой ответ (по крайней мере, на заголовок) вопроса.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.