检查软件包是否安装的 Pythonic 方法

Sav*_*hew 2 python redhat centos

Pythonic 方式检查 Centos/Redhat 中安装的软件包列表?

在 bash 脚本中,我会这样做:

 rpm -qa | grep -w packagename
Run Code Online (Sandbox Code Playgroud)

小智 5

import sys
import rpm

ts = rpm.TransactionSet()
mi = ts.dbMatch( 'name', sys.argv[1] )
try :
    h = mi.next()
    print "%s-%s-%s" % (h['name'], h['version'], h['release'])
except StopIteration:
    print "Package not found"
Run Code Online (Sandbox Code Playgroud)
  1. TransactionSet() 将打开 RPM 数据库
  2. 不带参数的 dbMatch 将设置一个匹配迭代器来遍历整组已安装的软件包,您可以在匹配迭代器上调用 next 来获取下一个条目,即代表一个包的标头对象
  3. dbMatch 还可以用于查询特定的包,您需要传递标签的名称以及您正在查找的该标签的值:

    dbMatch('name','mysql')
    
    Run Code Online (Sandbox Code Playgroud)