Ручное обновление ключевой базы GNU ELPA для Emacs 25

Вопрос или проблема

Я получаю эту ошибку каждый раз, когда выполняю 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 и устранить возникшую ошибку, выполните следующие шаги:

  1. Создание конфигурационного файла 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 использовать сервер ключей, что поможет вам получать необходимые открытые ключи.

  2. Получение открытого ключа:

    После того как вы создали файл конфигурации, выполните следующую команду в терминале для получения нужного открытого ключа:

    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
  3. Проверка успешного обновления ключей:

    После того как вы успешно получили ключи, запустите Emacs и проверте, работает ли обновление пакетов без ошибок. Для этого выполните:

    M-x package-refresh-contents RET
  4. Временное отключение проверки подписи (если необходимо):

    Если у вас по-прежнему не получается обновить ключи, вы можете временно отключить проверку подписи. Для этого добавьте следующее в ваш файл конфигурации Emacs (обычно это ~/.emacs или ~/.emacs.d/init.el):

    (setq package-check-signature nil)

    Это позволит вам обновлять содержимое пакетов без проверки подписей. Однако, этот метод снижает безопасность, и его следует использовать только как временное решение.

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

Оцените материал
Добавить комментарий

Капча загружается...