วิธีดำเนินการกับ package.el การตรวจสอบลายเซ็นล้มเหลว


32

ฉันเพียงแค่พยายามที่จะติดตั้งascii-art-to-unicodeจากที่เก็บ GNU ( http://elpa.gnu.org/ ) list-packagesผ่าน ฉันได้รับข้อผิดพลาดต่อไปนี้:

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")

ฉันใช้ cask / pallet เพื่อจัดการแพ็คเกจของฉัน มีการตั้งค่าบางอย่างที่ฉันพลาดหรือไม่? มีการเปลี่ยนแปลงล่าสุดของ elpa หรือไม่

ฉันใช้ emacs 24.4 pre-release


1
ฉันมีปัญหาที่คล้ายกันในวันนี้อัปเดตโหมด org จาก elpa (แม้ว่าฉันใช้ package.el) อาจเป็นปัญหาชั่วคราวกับเซิร์ฟเวอร์ของพวกเขา
Malabarba

คำตอบ:


14
  1. กำหนดpackage-check-signatureเป็นnil
  2. ดาวน์โหลดแพ็คเกจgnu-elpa-keyring-updateและเรียกใช้ฟังก์ชันด้วยชื่อเดียวกัน
  3. รีเซ็ตpackage-check-signatureเป็นค่าเริ่มต้น 'allow-unsigned`

สิ่งนี้ใช้ได้สำหรับฉัน


2
ไม่จำเป็นต้องเรียกใช้ฟังก์ชั่นอย่างชัดเจน: การติดตั้งแพคเกจควรจะเพียงพอเพราะมันควรจะเรียกใช้ฟังก์ชั่นสำหรับคุณโดยอัตโนมัติ
สเตฟาน

อ่าโอเค ยากที่จะทดสอบตอนนี้มันใช้งานได้ แต่ฉันคิดว่าคุณพูดถูก
joe_maya

14

FWIW - ฉันมีปัญหานี้กับลายเซ็น org-20140407.tar.sig เช่นเดียวกับซิกแพคเกจการตรวจสอบลายเซ็นเป็น / คืออนุญาตให้-ที่ไม่ได้ลงชื่อ

ฉันเปลี่ยนค่าแพ็คเกจตรวจสอบลายเซ็นเป็นศูนย์และปัญหาได้รับการแก้ไข


ขอบคุณ! ฉันไม่เคยจะเดาว่า "อนุญาตให้ได้รับการรับรอง-" ไม่ได้หมายความว่าสิ่งที่มันควรจะหมายถึง ...
AVP

2
หากคุณตั้งค่าเป็นศูนย์ตรวจสอบให้แน่ใจว่าคุณเข้าถึงที่elpa.gnu.orgเก็บข้อมูลผ่าน HTTPS ไม่เช่นนั้นคุณจะเปิดตัวเองเพื่อความปลอดภัยอย่างง่าย
Stefan

8

หากคุณพยายามติดตั้งแพคเกจgnu-elpa-keyring-update(ซึ่งดูเหมือนว่ามีจุดประสงค์ในการอัปเดตคีย์ที่ใช้โดยผู้จัดการแพคเกจ) คุณจะเห็นคำอธิบายของแพคเกจที่คุณสามารถทำได้:

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

บน commandline เพื่อรับคีย์ใหม่ด้วยตนเอง เพื่อให้แน่ใจว่าคุณขอรหัสที่ถูกต้อง ( 066DAFCB81E42C40ในตัวอย่างด้านบน) ให้ตรวจสอบข้อความแสดงข้อผิดพลาดที่ emacs ให้เมื่อคุณพยายามติดตั้งแพ็คเกจใด ๆ


4

ดูเหมือนว่ากุญแจที่ใช้ในการลงนามในแพ็คเกจนี้ (474F05837FBDEF9B) นั้นไม่ได้ถูกเผยแพร่จริง ๆ (ดังนั้นจึงไม่สามารถลงนามได้ดังนั้นจึงไม่น่าเชื่อถือ) แต่ดูเหมือนว่า package.el ควรจะล้มเหลวอย่างสง่างาม (ตอนนี้) ในกรณีเช่นนี้:

;; 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))

ดังนั้นฉันสงสัยว่าด้วยเหตุผลบางอย่างค่าของคุณpackage-check-signatureแตกต่างจากค่าเริ่มต้นของallow-unsigned?


package-check-signatureคือallow-unsigned; ที่เหลือepg-signature-status- hmm
Tom Regner

sig=[cl-struct-epg-signature bad 474F05837FBDEF9B nil nil nil nil nil nil nil nil nil] status=bad- โปรดทราบว่าปัญหายังคงมีอยู่
sds

allow-unsignedหมายถึงอนุญาตให้ติดตั้งแพคเกจที่ไม่ได้ลงนามซึ่งตรงข้ามกับแพ็คเกจที่ลงชื่อ แต่มีลายเซ็นที่คุณไม่สามารถตรวจสอบได้ นี่ใช้เพื่อให้คุณสามารถติดตั้งจากคลังเก็บ ELPA ซึ่งไม่ได้ลงนามในแพ็คเกจของพวกเขา (MELPA เหมือนครั้งที่ฉันตรวจสอบครั้งล่าสุด)
Stefan

1

หรือคุณสามารถอัพเกรดเป็น emacs ที่ใหม่กว่าเช่นบน Ubuntu:

sudo add-apt-repository ppa:ubuntu-elisp/ppa
sudo apt-get update
sudo apt-get install emacs-snapshot

1

รับคีย์ puglic ด้วย:

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

ข้อควรระวัง: เวอร์ชันของคุณอาจเป็นรหัสที่แตกต่างกัน!


1

คำตอบที่นี่ค่อนข้างเก่า ดูเหมือนว่าปัญหานี้จะได้รับการแก้ไข ณ วันที่ 26.3


0

การตั้งค่าpackage-check-signatureเป็นnilแทนที่จะเป็นค่าเริ่มต้นallow-unsignedแก้ไขสิ่งนี้สำหรับฉัน

Fedora 29, GNU Emacs 26.2 (รุ่นที่ 1, x86_64-redhat-linux-gnu, GTK + เวอร์ชั่น 3.24.8) ปี 2019-04-30

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.