zoukankan      html  css  js  c++  java
  • querying rpm database

    Call dbMatch on a transaction set to create a match iterator. As with the C API, a match iterator allows your code to iterate over the packages that match a given criteria.
    A call to dbMatch with no parameters means to set up a match iterator to go over the entire set of installed packages. The basic format follows:
    import rpm
     
    ts = rpm.TransactionSet()
     
    mi = ts.dbMatch()
    for h in mi:
    # Do something with header object...
    In this example, the call to dbMatch returns a match iterator. The for loop iterates over the match iterator, returning one header each time.
    In addition to this syntax, you can call next on the match iterator to get the next entry, a header object that represents one package. For example:
    import rpm
     
    ts = rpm.TransactionSet()
     
    mi = ts.dbMatch()
    while mi:
    h = mi.next()
    # Do something with the header object
    The explicit call to next on the match iterator will likely no longer be supported in a future version of the RPM Python API, since the PEP-234 (Python Enhancement Proposal) calls for one means or the other for iterating, but not both.
    For example, Listing 17-1 shows a Python script to print out the name, version, and release information for all installed packages.
    Listing 17-1: rpmqa.py
    #!/usr/bin/python
     
    # Acts like rpm -qa and lists the names of all the installed packages.
    # Usage:
    # python rpmqa.py
     
    import rpm
     
    ts = rpm.TransactionSet()
     
    mi = ts.dbMatch()
    for h in mi:
     
    print "%s-%s-%s" % (h['name'], h['version'], h['release'])
    When you call this script, you should see output like the following, truncated for space:
    $ python rpmqa.py
    libbonoboui-2.0.1-2
    attr-2.0.8-3
    dhclient-3.0pl1-9
    file-3.37-8
    hdparm-5.2-1
    ksymoops-2.4.5-1
    imlib-1.9.13-9
    logwatch-2.6-8
    mtr-0.49-7
    openssh-clients-3.4p1-2
    pax-3.0-4
    python-optik-1.3-2
    dump-0.4b28-4
    sendmail-8.12.5-7
    sudo-1.6.6-1
    mkbootdisk-1.4.8-1
    telnet-0.17-23
    usbutils-0.9-7
    wvdial-1.53-7
    docbook-dtds-1.0-14
    urw-fonts-2.0-26
    db4-utils-4.0.14-14
    libogg-devel-1.0-1
    Note
    If you set the execute permission on this script, you can skip the explicit call to the python command. For example:
    $ ./rpmqa.pyr
  • 相关阅读:
    if...else if...else和switch语句的注意点
    oracle如何用sql查看触发器?
    jfinal如何调用存储过程?
    struts2中s:iterator 标签的使用详解 及 OGNL用法
    Protobuf3 语法指南
    Golang的优雅重启
    从外部设置传入Go变量
    Golang服务器热重启、热升级、热更新(safe and graceful hot-restart/reload http server)详解
    Linux文件系统深度讨论【转】
    Go语言中的byte和rune区别、对比
  • 原文地址:https://www.cnblogs.com/hustdc/p/7154302.html
Copyright © 2011-2022 走看看