ฉันจะตรวจสอบว่าคีย์ PGP ถูกนำเข้าสู่ RPM ได้อย่างไร


13

หนึ่งสามารถนำเข้าคีย์ด้วย:

รอบต่อนาที - นำเข้า / เส้นทาง / ถึง / สำคัญ

แต่คุณจะบอกได้อย่างไรถ้าคุณนำเข้ากุญแจนี้แล้ว พยายามที่จะนำเข้าอีกครั้งจะล้มเหลวด้วยข้อผิดพลาดและฉันพยายามหลีกเลี่ยงปัญหานี้ในขณะที่ฉันกำลังใช้ Puppet เพื่อติดตั้งคีย์

คำตอบ:


10

คุณสามารถตรวจสอบอีกครั้งว่ามีการนำเข้ากุญแจโดยใช้rpm -qi gpg-pubkey-<version>-<release>หรือไม่ หากมีการติดตั้งไว้ rpm จะให้ข้อมูลทั้งหมดเกี่ยวกับมันถ้าไม่มันจะออกโดยมีค่าส่งคืน 1 ดังนั้นคุณสามารถเพิ่มunlessพารามิเตอร์สูตรสูตรหุ่นของคุณ:

exec { "rpm --import /path/to/package":
  # ...
  unless => "rpm -qi gpg-pubkey-<version>-<release> > /dev/null 2>&1"
}

2
ฉันพบวิธีที่ดีกว่าด้วยรหัสบางอย่าง:KEYFILE=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release; KEYID=$(echo $(gpg --throw-keyids < $KEYFILE)|cut -c11-18|tr [A-Z] [a-z]); rpm -q gpg-pubkey-$KEYID
lsd

2
การตัดเชื่อมโยงคุณกับเค้าโครงเฉพาะซึ่งไม่สามารถใช้กับระบบทดสอบ RHEL6 ของฉัน และตอนนี้ gpg จะรวมคีย์ย่อยเช่นเดียวกับปุ่มผับ ดังนั้นฉันสิ้นสุดการใช้KEYID=$(gpg --throw-keyids $KEYFILE | sed -n '/^pub/s|^[^/]*/\([[:alnum:]]*\) .*|\1|p' | tr [[:upper:]] [[:lower:]])
dannysauer

5

ที่สำคัญทุกคนที่นำเข้าเพิ่มรายการ rpmdb gpg-pubkey-<left(hex(fingerprint), 8)>-<encoded import date>ของ เพียงตรวจสอบชื่อนั้น ( gpg-pubkey) และรุ่นที่เหมาะสม (อักขระ 8 ตัวแรกของลายนิ้วมือคีย์เป็นเลขฐานสิบหก) ใน rpmdb


rpm -qi gpg-pubkey-FINGERPRINT-\* > /dev/null 2>&1 (การอ้างอิงรวมถึงวิธีรับFINGERPRINT: robinbowes.com/article.php/20081107174415581 )
Ted Zlatanov

2

หากคุณเพียงต้องการตรวจสอบว่าคีย์ถูกนำเข้า (โดยไม่ต้องประมวลผลข้อมูลนี้โดยทางโปรแกรม) คุณสามารถแสดงรายการคีย์ทั้งหมดเช่นนี้:

rpm -qi gpg-pubkey-\* | grep -E ^Packager

หรือรหัส:

rpm -qi gpg-pubkey-\* | grep -E "^Version  "

สิ่งนี้อาจดูเหมือนชัดเจนสำหรับคนจำนวนมาก แต่ฉันคิดว่าสำหรับบางคนมันเป็นคำตอบที่ตรงกว่า (อย่างน้อยบรรทัดแรกของ) คำถาม

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