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 || :