wiki:Packages/rpm/rpm-python/rpminfo

Version 9 (modified by yasumichi, 11 years ago) (diff)

--

パッケージの詳細情報を表示する

 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
        for dep_type in [ ['providename', 'Provides:'],
                          ['requirename', 'Requires:'],
                          ['obsoletename', 'Obsoletes:'],
                          ['conflictname', 'Conflicts:'] ]:
                ds = h.dsFromHeader(dep_type[0])
                if ds.Count() > 0:
                        print dep_type[1]
                        for provide in ds:
                                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

rpm.ds クラスの詳細(書きかけ)

メソッド 説明
DNEVR
BT
SetNoPromote
EVR
TagN
Sort
Count
Search
N
Merge
Flags
Ix
Compare
Color
Refs
Notify
Find