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

标签 python centos redhat

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

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

 rpm -qa | grep -w packagename

最佳答案

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"
  1. TransactionSet() 将打开 RPM 数据库
  2. 不带参数的 dbMatch 将设置一个匹配迭代器来遍历整组已安装的软件包,您可以在匹配迭代器上调用 next 来获取下一个条目,即代表一个软件包的 header 对象
  3. dbMatch 还可以用于查询特定的包,您需要传递标签的名称以及您要查找的该标签的值:

    dbMatch('name','mysql')
    

关于检查软件包是否安装的 Pythonic 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27833644/

相关文章:

python - 如何使用 scapy 从探测请求中提取供应商数据

python - Bokeh 弃用警告 : Setting a fixed font size value as a string 'text_font_size' is deprecated

ruby - 使用 rvm 在 Centos 7 上安装 Ruby 时出错

python - 如何使用 MYSQLdb 在 Python 2.7 中正确创建左连接?

python - 有可用的 python 镜像吗?

mysql - zpanel安装-重装mysql问题-CentOS-6.4 zpanel-10.1.0

php - ReactPHP:使用启动/停止命令运行服务器

linux - 在带有 sqlite 绑定(bind)的 tcl 中, "eval"命令没有为 "ATTACH DATABASE"做任何事情

linux - 允许 Apache 在 root 中执行命令吗?

java - RHEL 每个目录的文件数限制