← Back

Using the Querying Feature of rpm

Let's talk about the package querying feature of the rpm utility based on lucene package. The full version of the flag is --query, but better try to remember its short version -q:

$ rpm --query --all

…is equivalent to…

$ rpm -qa

So, in case the package exists, the command outputs the full name of the package:

$ rpm -qa lucene
lucene-6.1.0-3.fc26.noarch

And nothing, in case it does not:

$ rpm -qa solr3-javadoc

Then, if we want to know what packages are present in the package use this:

$ rpm --query --list lucene

…or…

$ rpm -ql lucene
/usr/share/doc/lucene
/usr/share/doc/lucene/CHANGES.txt
/usr/share/doc/lucene/MIGRATE.txt
/usr/share/doc/lucene/README.txt
/usr/share/java/lucene
/usr/share/java/lucene/lucene-core.jar
/usr/share/licenses/lucene
/usr/share/licenses/lucene/LICENSE.txt
/usr/share/licenses/lucene/NOTICE.txt
/usr/share/maven-metadata/lucene-lucene-core.xml
/usr/share/maven-poms/lucene
/usr/share/maven-poms/lucene/lucene-core-aggregator.pom
/usr/share/maven-poms/lucene/lucene-core.pom

Use --docfiles or -d to list documentation files included in the package:

$ rpm --query --docfiles lucene

…or…

$ rpm -qd lucene
/usr/share/doc/lucene/CHANGES.txt
/usr/share/doc/lucene/MIGRATE.txt
/usr/share/doc/lucene/README.txt

To print pre-installation and post-installatino scripts of the package:

$ rpm -q --scripts NetworkManager
preinstall scriptlet (using /bin/sh):
if [ -f "/usr/lib/systemd/system/network-online.target.wants/NetworkManager-wait-online.service" ] ; then
    # older versions used to install this file, effectively always enabling
    # NetworkManager-wait-online.service. We no longer do that and rely on
    # preset.
    # But on package upgrade we must explicitly enable it (rh#1455704).
    systemctl enable NetworkManager-wait-online.service || :
fi
postinstall scriptlet (using /bin/sh):
/usr/bin/udevadm control --reload-rules || :
/usr/bin/udevadm trigger --subsystem-match=net || :


if [ $1 -eq 1 ] ; then 
        # Initial installation 
        systemctl preset NetworkManager.service NetworkManager-wait-online.service NetworkManager-dispatcher.service >/dev/null 2>&1 || : 
fi
preuninstall scriptlet (using /bin/sh):
if [ $1 -eq 0 ]; then
    # Package removal, not upgrade
    /bin/systemctl --no-reload disable NetworkManager.service >/dev/null 2>&1 || :

    # Don't kill networking entirely just on package remove
    #/bin/systemctl stop NetworkManager.service >/dev/null 2>&1 || :

    /usr/sbin/update-alternatives --remove ifup /usr/libexec/nm-ifup >/dev/null 2>&1 || :
fi

if [ $1 -eq 0 ] ; then 
        # Package removal, not upgrade 
        systemctl --no-reload disable NetworkManager-wait-online.service NetworkManager-dispatcher.service > /dev/null 2>&1 || : 
        systemctl stop NetworkManager-wait-online.service NetworkManager-dispatcher.service > /dev/null 2>&1 || : 
fi
postuninstall scriptlet (using /bin/sh):
/usr/bin/udevadm control --reload-rules || :
/usr/bin/udevadm trigger --subsystem-match=net || :


systemctl daemon-reload >/dev/null 2>&1 || :