| Version 2 (modified by yasumichi, 15 years ago) (diff) |
|---|
Printing information on packagesの例は、そのままでは期待通りに動作しない。rpm.ds オブジェクトの仕様が、当時と違うと思われる。
#!/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