2010-09-20 11 views
5

Wie angezeigt von rpm -qi package?Gibt es eine Möglichkeit, die Schlüssel-ID eines installierten RPM programmatisch zu erhalten?

Ich möchte nicht wirklich die Ausgabe von rpm -qi analysieren. Ich würde lieber rpm -q --qf verwenden, von denen ich das Format steuern kann und nicht einer ästhetischen Laune der zukünftigen Version unterworfen ist.

Aber das einzige nützliche Tag, das ich in der man-Seite finden kann, ist SIGPGP, das mir die gesamte Unterschrift, nicht nur die kurze Schlüsselidentifikation holt. Siehe den unterschied:

$ rpm -qi coreutils 
Name  : coreutils     Relocations: (not relocatable) 
Version  : 8.4        Vendor: Fedora Project 
Release  : 8.fc13      Build Date: Tue 20 Jul 2010 05:21:15 AM BRT 
Install Date: Tue 03 Aug 2010 01:58:53 PM BRT  Build Host: x86-17.phx2.fedoraproject.org 
Group  : System Environment/Base  Source RPM: coreutils-8.4-8.fc13.src.rpm 
Size  : 12659257       License: GPLv3+ 
Signature : RSA/SHA256, Tue 20 Jul 2010 03:14:09 PM BRT, Key ID 7edc6ad6e8e40fde 
Packager : Fedora Project 
URL   : http://www.gnu.org/software/coreutils/ 
Summary  : A set of basic GNU tools commonly used in shell scripts 
Description : 
These are the GNU core utilities. This package is the combination of 
the old GNU fileutils, sh-utils, and textutils packages. 

$ rpm -q --qf '%{NAME}\t%{VERSION}\t%{RELEASE}\t%{ARCH}\t%{EPOCH}\t%{SIGPGP}\n' coreutils 
coreutils  8.4  8.fc13 i686 (none) 8902150305004c45e7717edc6ad6e8e40fde010824c50fff6af998d5b67a663e6c165bbb3ff888afbe0961b7a60bab3d9a1605b271bbfaccc2eda4bc121e7bc8300efa0208100eb0961c021db2f0be52d422d21c0906a3252df125454fd4886af63574ed729c1370f583c0d46e4a97ee007b72966d965eed1891aaacf296ba31cb44fb46a20c5b39031b79c4eff66948aa3e79090a5f1ce969d3319ebbd47ff38ef382c64c1d59ba5c4d40b3d31a02620bd26005910ca98b7115ac24a30c2198f194bebb2347041ea094be23f5af2e6bb397736e8aff0dd95b4ebd2301ce00663180bbcf214559c72bc74a902102cdb2485b60c78e90c07ed76ecc78d44fd2ec710eb59937e513a37383b5f79a9a1a3996b614a8c1dc81eb8bd468b24aeceac378ee2da659978b5ebe7ab8b52ddb9342e45b2aa5d7b46c40904b57fd6e5ecf26e651c0dce46edb65ef54d26b73fbe99ac5757648c2e509e00887bb1373d30202a30e978407d9db3426d1f468ed4f88f3b379b14ac74b98167860fa36adc0768d6f33958e17c08a896f5aadcb6b70ce2c104454ab4d5b2e6166de465905d8aac14d5257324d50d78e9dc0b3836adc0817eacf5cd026e53330afefe24c6ad549d29b46f9bef544abfa4a87c66fc64c5281b453f72b3c6e660098c856d18031abb725792788ca6061603046170bfdfffb7772ee55299a2f92c996cd140470dba1b99f3c8e5e4a4f7c159fd0fae3fd1854335615e577fb5d05f5 
+0

Programmatically auf welcher Sprache? * rpm -qi-Paket | grep "Schlüssel-ID" | cut -d '' -f15 * – karlphillip

Antwort

2

Um die eigentliche Frage zu beantworten, gibt es keine Möglichkeit, direkt für die keyid abzufragen. Ich lief auf das gleiche Problem ein, das Sie haben, und stellte fest, dass jemand tatsächlich eine bug report with redhat für ein Feature erstellt hat, um das Hinzufügen dieser Funktion anzufordern.

in dem Bericht, sagt der Responder etwas wie unten zu verwenden:

rpm -q --qf "%|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:{(none}|}| %{NVRA}\n" emacs | cut -d' ' -f11 
1

Warum können Sie nicht den relevanten Teil von SIGPGP mit Schnitt schneiden? Ich vermute stark, dass es sich in jedem rpm-Header um den gleichen Offset befindet, aber Sie sollten RPMs aus mehreren Quellen überprüfen, um sicher zu gehen.

+0

Jetzt, wo du es erwähnst, ist es da! Aber gilt das für jeden möglichen Schlüsseltyp, bei gleichem Offset? – JCCyC

+0

Einige RPMs haben SIGPGP, andere haben SIGGPG. Der Offset für einen scheint 20 zu sein und für den anderen 36. Oder vielleicht ist der Unterschied, weil man RSA/SHA256 ist und der andere DSA/SHA1 ist. – JCCyC

+0

Wenn Sie wirklich diesen Weg gehen wollen, [dies] (http://www.rpm.org/max-rpm/s1-rpm-file-format-rpm-file-format.html#S2-RPM-FILE -FORMAT-HEADER) Link zeigt Ihnen das rpm-Dateiformat an. Der Signaturbereich enthält die Daten, die Sie gerade betrachten. – vincentleest