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
Viewing / Editing rpm package scripts
Use the rpmrebuild utility to generate a .spec file from an existing RPM package. The spec file that gets generated will contain any scripts that may be bundled with rpm which you can modify.
# rpmrebuild -e -p some-package.rpm
## This should open your editor with the .spec file that was generated.
## Save and quit when done to have the option to rebuild the rpm.
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 | Install | Upgrade | |
| %post | Install | Upgrade | |
| %preun | Uninstall | Upgrade | |
| %postun | 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