wiki:Packages/rpm/rpm-python/rpminfo

Version 12 (modified by yasumichi, 12 years ago) (diff)

--

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

 Printing information on packagesの例は、そのままでは期待通りに動作しない。rpm.fi や 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

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

メソッド 説明
DN
FX
BN
FState
DC
FC
DX
VFlags
FN
FClass
FGroup
FMtime
FLink
FFlags
MD5
FColor
FRdev
FSize
FUser
FMode
Digest