RPM
Common RPM Tasks
Below are the common tasks I do with RPM.
List installed packages
rpm -qa
Look for a specific package by name
rpm -qi <package name>
Determine the origin of a file
rpm -qf <path to file>
eg:
# rpm -qf /etc/hosts
setup-2.8.14-10.el6.noarch
Extracting a rpm package
Go into a directory and extract it using cpio. This will dump the files in the current directory, so make a directory to avoid having your files clobbered.
mkdir package && cd package
rpm2cpio ~/custom-package.rpm | cpio -idmv
Remove a package with a broken uninstall script
rpm -e --noscripts <package>
Building RPM
Creating 32bit Dependency
In your RPM.spec file, have the following in your Requires line:
Requires: nss-pam-ldapd(x86-32)
Not:
Requires: nss-pam-ldapd.i686
Checking for Install/Upgrade/Remove in Install Scripts
To check whether a .rpm file is being installed, upgraded, or removed in the pre/post install scripts, check $1 against the table below:
| $1 = | 0 | 1 | 2 |
|---|---|---|---|
| %pre (Pre-Install) | Install | Upgrade | |
| %post (Post-Install) | Install | Upgrade | |
| %preun (Pre-Uninstall) | Uninstall | Upgrade | |
| %postun (Pre-Uninstall) | Uninstall | Upgrade |
Example usage:
%pre
if [ $1 -eq 1 ] ; then
# Initial install
fi
Troubleshooting
Warning: RPMDB altered outside of yum.
If you ever get the error:
Warning: RPMDB altered outside of yum.
... it probably means that you ran rpm. To fix this warning, clear yum's cache and force a rebuild by running:
yum clean all
yum makecache