0058 — GPG

Сейчас принято подписывать пакеты цифровой подписью с помощью GPG. Это почти всегда работает, за исключением тех случаев, когда ваша система ничего не знает о ключе, который использовался для подписи.

В общем виде процедура проверки подписи выглядит так:

  1. Импортировать нужный ключ в систему.
  2. Повторно выполнить нужную операцию: загрузка пакета, выполнение скрипта и так далее.

Сложности обычно начинаются на первом этапе.

В принципе, как понять, что проблема с ключом? В терминал или буфер *Messages*, если речь идёт о Emacs, выводится что-то такое:

Contacting host: elpa.gnu.org:443 [2 times]
error in process sentinel: Selecting deleted buffer [2 times]
package--check-signature-content: Failed to verify signature: "org-9.7.13.tar.sig"

Это я пытался пакет org обновить из официального репозитория. Поскольку обычно рядом выводится отпечаток ключа, следует выполнить команду импорта:

sudo gpg2 --keyserver <сервер> --recv-keys <key1> <key2> ... <keyN>

Здесь:

  • <сервер> — сервер ключей. Их много, и не факт, что вы сразу найдёте нужный ключ на нужном сервере. Но попробуйте для начала использовать эти значения (в алфавитном порядке):

    • keyring.debian.org
    • keyserver.ubuntu.org
    • pgp.mit.edu
  • <key> — отпечаток ключа. Можно вводить полностью, можно ограничиться только частью. Если она уникальна, ключ будет найден. В противном случае получите сообщение об ошибке.

С учётом вышесказанного, для успешной установки новой версии пакета org в Emacs мне достаточно было выполнить на уровне системы вот эту команду:

sudo gpg2 \
  --keyserver keyserver.ubuntu.org \
  --recv-keys 0327BE68D64D9A1A66859F15645357D2883A0966