How to get the original file from an RPM.
You might have accidentally deleted a configuration or binary file which was installed as part of a package OR may be you modified the original file and you want to restore the original as you didn’t take a back – this blog will help you in resolving similar issues.
The steps below are for Redhat/CentOS based Linux systems, where the package was installed using rpm or yum. The steps basically outline how to grab the rpm package, unpack and gain access to the files inside the rpm. I will demo the steps i used to recover ntp.conf –
1. Identify the package owning/containing the file –
[root@tester ~]# rpm -qf /etc/ntp.conf ntp-4.2.6p5-1.el6.centos.x86_64
2. download the original package –
We will download the rpm package in /tmp in order to unpack it later –
[root@tester ~]# cd /tmp/ [root@tester tmp]# yumdownloader ntp-4.2.6p5-1.el6.centos.x86_64 Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: centos.aol.com * epel: reflector.westga.edu * extras: centos-distro.cavecreek.net * updates: lug.mtu.edu ntp-4.2.6p5-1.el6.centos.x86_64.rpm | 592 kB 00:00 [root@tester tmp]# ls -lh ntp-4.2.6p5-1.el6.centos.x86_64.rpm -rw-r--r--. 1 root root 592K Mar 9 03:19 ntp-4.2.6p5-1.el6.centos.x86_64.rpm
Note – you can following the steps in this link to install yumdownloader or alternative means to download a package. For a short answer, just run ‘yum install yum-utils’ to install yumdownloader.
3. extrack RPM package –
We will use rpm2cpio to extract the RPM package and then pipe to cpio to copy the files from the archive –
[root@tester tmp]# rpm2cpio ntp-4.2.6p5-1.el6.centos.x86_64.rpm | cpio -i --make-directories 3344 blocks [root@tester tmp]# ls etc ntp-4.2.6p5-1.el6.centos.x86_64.rpm usr var yum_save_tx-2014-03-09-01-00h9I83Y.yumtx
4. Access the file you are looking for –
Once we extracted the rpm package, the directory structure is easy to navigate – for instance if we looking for ntp.conf, it is under etc/ntp.conf – the directory structure mirrors that of the OS –
[root@tester tmp]# ls -al etc/ total 28 drwxr-xr-x. 6 root root 4096 Mar 9 03:19 . drwxrwxrwt. 6 root root 4096 Mar 9 03:19 .. drwxr-xr-x. 3 root root 4096 Mar 9 03:19 dhcp drwxr-xr-x. 3 root root 4096 Mar 9 03:19 ntp -rw-r--r--. 1 root root 1778 Mar 9 03:19 ntp.conf drwxr-xr-x. 3 root root 4096 Mar 9 03:19 rc.d drwxr-xr-x. 2 root root 4096 Mar 9 03:19 sysconfig [root@tester tmp]# ls -al etc/ntp ntp/ ntp.conf [root@tester tmp]# ls -al etc/ntp.conf -rw-r--r--. 1 root root 1778 Mar 9 03:19 etc/ntp.conf
At this point, you can view the files in the original rpm and copy the ones you need. You might also find the link below that I referenced for quickly re-installing original files using
yum reinstall ntp