0058 — GPG
Сейчас принято подписывать пакеты цифровой подписью с помощью GPG. Это почти всегда работает, за исключением тех случаев, когда ваша система ничего не знает о ключе, который использовался для подписи.
В общем виде процедура проверки подписи выглядит так:
- Импортировать нужный ключ в систему.
- Повторно выполнить нужную операцию: загрузка пакета, выполнение скрипта и так далее.
Сложности обычно начинаются на первом этапе.
В принципе, как понять, что проблема с ключом? В терминал или буфер *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