Вопрос или проблема
Я получаю эту ошибку каждый раз, когда выполняю M-x package-refresh-contents
или M-x package-list-packages
, что связано с обновлением ключей Emacs:
Не удалось проверить подпись archive-contents.sig:
Нет открытого ключа для 066DAFCB81E42C40, созданного 2020-12-16T17:05:02-0500 с использованием RSA
Вывод команды:
gpg: Подпись сделана Ср 16 Дек 2020 05:05:02 PM EST
gpg: с использованием RSA ключа C433554766D3DDC64221BFAA066DAFCB81E42C40
gpg: Невозможно проверить подпись: Нет открытого ключа
Я пытаюсь следовать шагам по адресу http://elpa.gnu.org/packages/gnu-elpa-keyring-update.html, чтобы вручную обновить ключи ELPA. Я не могу установить пакет с помощью M-x package-install RET gnu-elpa-keyring-update RET
(при выполнении этой команды появляется сообщение [No match]
).
На той же странице перечислены три различных способа решить эту проблему вручную. Я попробовал первые два, и оба не сработали.
$ gpg --homedir ~/.emacs.d/elpa/gnupg --receive-keys 066DAFCB81E42C40
gpg: получение ключа с сервера не удалось: Общая ошибка
$ gpg --homedir ~/.emacs.d/elpa/gnupg --quick-set-expire 474F05837FBDEF9B 1y
gpg: "474F05837FBDEF9B" не является отпечатком
Теперь как мне попробовать третий способ (временно отключить проверку подписи)?
Некоторые системные детали:
$ emacs --version
GNU Emacs 25.2.2
Copyright (C) 2017 Free Software Foundation, Inc.
GNU Emacs предоставляется БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Вы можете перераспространять копии GNU Emacs
на условиях GNU General Public License.
Для получения дополнительной информации об этих вопросах см. файл под названием COPYING.
$ uname -a
Linux jetson 4.9.140-tegra #1 SMP PREEMPT Tue Oct 27 21:02:37 PDT 2020 aarch64 aarch64 aarch64 GNU/Linux
$ lsb_release -a
Нет модулей LSB.
ID дистрибьютора: Ubuntu
Описание: Ubuntu 18.04.5 LTS
Релиз: 18.04
Кодовое имя: bionic
У меня была та же проблема на Ubuntu 18.04 (Bionic).
Инструкции на https://emacs.stackexchange.com/questions/60554/cannot-run-melpa-package-refresh-due-to-gpg-errors решили мою проблему:
Создайте файл с именем gpg.conf
в ~/.emacs.d/elpa/gnupg/
со следующей строкой:
keyserver hkp://keys.gnupg.net
Затем выполните следующую команду:
gpg --homedir ~/.emacs.d/elpa/gnupg --receive-keys 066DAFCB81E42C40
Теперь Emacs должен быть в состоянии получать данные из Elpa без каких-либо сообщений об ошибках:
M-x package-refresh-contents RET
Я не могу добавлять комментарии. Новый ключ отличается. Следующая команда сработала для меня 28 сентября 2024 года.
gpg –homedir ~/.emacs.d/elpa/gnupg –receive-keys 645357D2883A0966
Ответ или решение
Чтобы вручную обновить ключи GNU ELPA для Emacs 25.2.2 и устранить возникшую ошибку, выполните следующие шаги:
-
Создание конфигурационного файла gpg.conf:
Вам нужно создать (или отредактировать, если он уже существует) файл
gpg.conf
в каталоге~/.emacs.d/elpa/gnupg/
. Для этого выполните следующую команду в терминале:mkdir -p ~/.emacs.d/elpa/gnupg echo "keyserver hkp://keys.gnupg.net" > ~/.emacs.d/elpa/gnupg/gpg.conf
Это укажет вашему GPG использовать сервер ключей, что поможет вам получать необходимые открытые ключи.
-
Получение открытого ключа:
После того как вы создали файл конфигурации, выполните следующую команду в терминале для получения нужного открытого ключа:
gpg --homedir ~/.emacs.d/elpa/gnupg --receive-keys 066DAFCB81E42C40
Если вы получаете сообщение об ошибке, указывающее на ошибку общего характера, попробуйте использовать другой сервер ключей. Например, можно попробовать следующий сервер:
gpg --homedir ~/.emacs.d/elpa/gnupg --keyserver hkp://pool.sks-keyservers.net --receive-keys 066DAFCB81E42C40
Если и это не сработает, попробуйте другой ключ, который соответствует текущему состоянию (например, на сентябрь 2024 года ключ, который сработал, – это
645357D2883A0966
):gpg --homedir ~/.emacs.d/elpa/gnupg --receive-keys 645357D2883A0966
-
Проверка успешного обновления ключей:
После того как вы успешно получили ключи, запустите Emacs и проверте, работает ли обновление пакетов без ошибок. Для этого выполните:
M-x package-refresh-contents RET
-
Временное отключение проверки подписи (если необходимо):
Если у вас по-прежнему не получается обновить ключи, вы можете временно отключить проверку подписи. Для этого добавьте следующее в ваш файл конфигурации Emacs (обычно это
~/.emacs
или~/.emacs.d/init.el
):(setq package-check-signature nil)
Это позволит вам обновлять содержимое пакетов без проверки подписей. Однако, этот метод снижает безопасность, и его следует использовать только как временное решение.
После выполнения этих шагов ваше обновление пакетов в Emacs должно пройти успешно. Если проблемы продолжаются, проверьте подключение к интернету и корректность команд.