How to extract RPM from RPM database on Red Hat Enterprise Linux

Is there a way to extract an installed RPM from an RPM database on Red Hat Enterprise Linux to reproduce the original .rpm file?


If you want to save a copy of the package as currently installed before upgrading or removing it, use rpm --repackage -- it'll save the RPMs in /var/tmp or /var/spool/repackage or elsewhere, depending on your configuration.

Otherwise, there exists rpmrebuild, which does exactly what you ask for.

Word of caution: with neither of these tools do you obtain the exact same *.rpm as the one you started from. Any changes to the installed files belong to the package will be in the RPMs generated.


Producing the original rpm file isn't possible, it's been extracted and possibly discarded. The rpm database has information about what files it's installed and their checksums, permissions, and the postinst scripts:

# verify package contents
rpm -q packagename --verify
# read the scripts that run on installation and removal
rpm -q packagename --scripts

will give you some information.

If you want to obtain an rpm from the respository, I recommend using yumdownloader, from the yum-utils package.

yum install yum-utils
yumdownloader packagename

This will download the latest rpm, not the one that is installed currently.