= パッケージの詳細情報を表示する = [http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch16s03s05.html Printing information on packages]の例は、そのままでは期待通りに動作しない。rpm.ds オブジェクトの仕様が、当時と違うと思われる。 == rpminfo.py == {{{ #!/usr/bin/python # Lists information on installed package listed on command line. # Usage: # python rpminfo.py package_name import rpm, sys def printEntry(header, label, format, extra): value = header.sprintf(format).strip() print "%-20s: %s %s" % (label, value, extra) def printHeader(h): if h[rpm.RPMTAG_SOURCEPACKAGE]: extra = " source package" else: extra = " binary package" printEntry(h, 'Package', "%{NAME}-%{VERSION}-%{RELEASE}", extra) printEntry(h, 'Group', "%{GROUP}", '') printEntry(h, 'Summary', "%{Summary}", '') printEntry(h, 'Arch-OS-Platform', "%{ARCH}-%{OS}-%{PLATFORM}", '') printEntry(h, 'Vendor', "%{Vendor}", '') printEntry(h, 'URL', "%{URL}", '') printEntry(h, 'Size', "%{Size}", '') printEntry(h, 'Installed on', "%{INSTALLTID:date}", '') print h['description'] print "Files:" for fi in h.fiFromHeader(): print fi[0] # Dependencies print "Provides:" for ds in h.dsFromHeader('providename'): print ds.DNEVR() print "Requires:" for ds in h.dsFromHeader('requirename'): print ds.DNEVR() print "Obsoletes:" for ds in h.dsFromHeader('obsoletename'): print ds.DNEVR() print "Conflicts:" for ds in h.dsFromHeader('conflictname'): print ds.DNEVR() ts = rpm.TransactionSet() for name in sys.argv: mi = ts.dbMatch( 'name', name ) for h in mi: printHeader(h) }}} === 実行例 === {{{ $ python rpminfo.py rpm Package : rpm-4.8.1-3vl6 binary package Group : System Environment/Base Summary : RPM パッケージ管理システム Arch-OS-Platform : x86_64-linux-x86_64-vine-linux Vendor : Project Vine URL : (none) Size : 1731019 Installed on : Sat Feb 5 07:26:24 2011 RPM パッケージマネージャ (RPM) は,ソフトウェアパッケージを インストール/アンインストール/チェック/問い合わせ/アップデート する機能を持った高機能パッケージマネージングシステムです. 各パッケージには,ファイルのアーカイブに加え,名前,バージョン, 説明などのパッケージ情報が含まれています. Files: /bin/rpm /etc/cron.daily/rpm /etc/logrotate.d/rpm /etc/rpm /usr/bin/gendiff /usr/bin/rpm2cpio /usr/bin/rpmdb /usr/bin/rpmquery /usr/bin/rpmsign /usr/bin/rpmverify (中略) /var/lib/rpm/__db.009 /var/spool/repackage Provides: P config(rpm) = 4.8.1-3vl6 P rpm = 4.8.1-3vl6 P rpm(x86-64) = 4.8.1-3vl6 Requires: R /bin/bash R /bin/sh (中略) R shadow-utils Obsoletes: O rpm-perl < 4.8.1 Conflicts: C patch < 2.5 }}}