up vote 2 down vote favorite
share [g+] share [fb]

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

link|improve this question
feedback

migrated from stackoverflow.com Jun 27 '11 at 22:13

This question came from our site for professional and enthusiast programmers.

2 Answers

up vote 2 down vote accepted

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.

link|improve this answer
feedback

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.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.