Jak postępować w przypadku niepowodzenia sprawdzania podpisu package.el

34

Właśnie próbowałem zainstalować ascii-art-to-unicodez repozytorium GNU ( http://elpa.gnu.org/ ) przez list-packages. Otrzymuję następujący błąd:

package--check-signature: Failed to verify signature 
   ascii-art-to-unicode-1.9.el.sig: ("No public key 
   for 474F05837FBDEF9B created at 2014-09-24T16:20:01+0200 
   using DSA")

Używam beczek / palet do zarządzania moimi paczkami; czy brakuje mi konfiguracji? Jakieś ostatnie zmiany w elpa?

Korzystam z wersji wstępnej emacs 24.4.

Tom Regner
źródło
1
Miałem podobny problem dzisiaj aktualizując tryb org z elpa (chociaż użyłem package.el). Może to być tymczasowy problem z ich serwerami.
Malabarba

Odpowiedzi:

16
  1. ustawiony package-check-signaturena nilnpM-: (setq package-check-signature nil) RET
  2. pobierz pakiet gnu-elpa-keyring-updatei uruchom funkcję o tej samej nazwie, np M-x package-install RET gnu-elpa-keyring-update RET.
  3. zresetować package-check-signaturedo wartości domyślnej „allow-unsigned”

To zadziałało dla mnie.

joe_maya
źródło
2
Nie powinno być konieczne jawne uruchomienie funkcji: instalacja pakietu powinna wystarczyć, ponieważ powinna ona automatycznie uruchomić tę funkcję.
Stefan
Ahh ok. Trudno to teraz przetestować, ponieważ działa, ale myślę, że masz rację.
joe_maya
14

FWIW - miałem ten problem z podpisem org-20140407.tar.sig. Podobnie jak podpis Sigma do kontroli paczki jest / był dozwolony-niepodpisany .

Zmieniłem wartość podpisu sprawdzania pakietu na zero i problem został rozwiązany.

Nelson Ingersoll
źródło
Dzięki! Nigdy bym nie zgadł, że
słowo
2
Jeśli ustawisz go na zero, upewnij się, że masz dostęp do elpa.gnu.orgrepozytorium przez HTTPS, w przeciwnym razie otworzysz się na łatwe ataki bezpieczeństwa.
Stefan
10

Jeśli spróbujesz zainstalować pakiet gnu-elpa-keyring-update(co wydaje się mieć na celu aktualizację kluczy używanych przez menedżera pakietów), w jego opisie zobaczysz, że możesz:

gpg --homedir ~/.emacs.d/elpa/gnupg --receive-keys 066DAFCB81E42C40

w wierszu polecenia, aby ręcznie uzyskać nowe klucze. Aby upewnić się, że pytasz o poprawny klucz ( 066DAFCB81E42C40w powyższym przykładzie), sprawdź komunikat o błędzie wyświetlany przez program emacs podczas próby zainstalowania dowolnego pakietu.

Johan
źródło
4

Wygląda na to, że klucz użyty do podpisania tego pakietu (474F05837FBDEF9B) faktycznie nie został opublikowany (dlatego nie można go podpisać, a zatem nie można mu ufać). Wydaje się jednak, że pakiet.el powinien zawieść w sposób wdzięczny (na razie) w takich przypadkach:

;; If package-check-signature is allow-unsigned, don't
;; signal error when we can't verify signature because of
;; missing public key.  Other errors are still treated as
;; fatal (bug#17625).
(unless (and (eq package-check-signature 'allow-unsigned)
             (eq (epg-signature-status sig) 'no-pubkey))
  (setq had-fatal-error t))

Zastanawiam się więc, czy z jakiegoś powodu twoja wartość package-check-signaturejest inna niż wartość domyślna allow-unsigned?

Sigma
źródło
package-check-signaturejest allow-unsigned; która opuszcza epg-signature-status- hmm.
Tom Regner
sig=[cl-struct-epg-signature bad 474F05837FBDEF9B nil nil nil nil nil nil nil nil nil] status=bad- zauważ, że problem nadal występuje.
sds
allow-unsignedoznacza umożliwienie instalacji pakietów, które nie są podpisane, w przeciwieństwie do pakietów, które są podpisane, ale których podpisu nie można zweryfikować. Służy to do instalowania z archiwów ELPA, które nie podpisują swoich pakietów (MELPA było tak, jak podczas ostatniego sprawdzania).
Stefan
1

Alternatywnie, możesz uaktualnić do nowszego emacsa, np. Na Ubuntu:

sudo add-apt-repository ppa:ubuntu-elisp/ppa
sudo apt-get update
sudo apt-get install emacs-snapshot
serv-inc
źródło
1

zdobądź klucz puglic z:

gpg2 --homedir ~/.emacs.d/elpa/gnupg --receive-keys 066DAFCB81E42C40

Uwaga: Twoja wersja może być innym kluczem!

sdhd
źródło
1

Odpowiedzi tutaj są trochę przestarzałe. Wydaje się, że ten problem został rozwiązany w emacs 26.3.

Arvind Parthasarathy
źródło
0

Ustawienie package-check-signaturedo nilzamiast domyślnego allow-unsignedstałe to dla mnie.

Fedora 29, GNU Emacs 26.2 (build 1, x86_64-redhat-linux-gnu, GTK + wersja 3.24.8) 30.04.2019

P. Hawkins
źródło