wiki:Packages/rpm/rpm-python/rpminfo

Version 2 (modified by yasumichi, 13 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
	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 /bin/sh
R /bin/sh
R /bin/sh
R /bin/sh
R config(rpm) = 4.8.1-3vl6
R coreutils
R coreutils
R db4-utils
R libacl.so.1()(64bit)
R libbz2.so.1()(64bit)
R libc.so.6()(64bit)
R libc.so.6(GLIBC_2.2.5)(64bit)
R libcap.so.2()(64bit)
R libdb-4.8.so()(64bit)
R libelf.so.1()(64bit)
R liblua-5.1.so()(64bit)
R liblzma.so.5()(64bit)
R libm.so.6()(64bit)
R libmagic.so.1()(64bit)
R libnss3.so()(64bit)
R libpopt.so.0()(64bit)
R libpopt.so.0(LIBPOPT_0)(64bit)
R libpthread.so.0()(64bit)
R libpthread.so.0(GLIBC_2.2.5)(64bit)
R librpm.so.1()(64bit)
R librpmbuild.so.1()(64bit)
R librpmio.so.1()(64bit)
R librt.so.1()(64bit)
R libz.so.1()(64bit)
R nss >= 3.12.5
R popt >= 1.10.2.1
R rpm-libs = 4.8.1
R rpmlib(CompressedFileNames) <= 3.0.4-1
R rpmlib(VersionedDependencies) <= 3.0.3-1
R rtld(GNU_HASH)
R shadow-utils
R shadow-utils
Obsoletes:
O rpm-perl < 4.8.1
Conflicts:
C patch < 2.5