How to Setup Local Yum Repository from CD-ROM/DVD-ROM image on RHEL 6

In this article, I will share about how to update and install RPM packages from the image CD-ROM/DVD-ROM in Red Hat Enterprise Linux 6 (RHEL 6). This step can also be used on CentOS 6 or older versions such as CentOS 5. It would be very useful if the server you have a slow internet connection, or no internet connection. Instead of using internet connection directly to RHEL repositories registered, it is possible to use the Local CD/DVD- ROM as your yum repository. There are two methods to install and configure local yum repository RHEL 6. Both methods have been tested and works well on Linux RHEL 6 server. You can choose whichever method you choose :

Method 1:
1. Insert DVD/ISO into DVD-Drive.
2. Mount the ISO from the DVD-ROM into /mnt directory :

[root@rhel6 ~]# mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only

3. Check the existing partition on your RHEL 6 server :

[root@rhel6 ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       9845280   1328824   8016336  15% /
tmpfs                   515660         0    515660   0% /dev/shm
/dev/sda1               495844     28689    441555   7% /boot
/dev/sr0               2862360   2862360         0 100% /mnt

4. Go to /mnt and check current directory :

root@rhel6 ~]# cd /mnt
[root@rhel6 mnt]# pwd
/mnt

5. List out what is in DVD.

[root@rhel6 mnt]# ls
EULA                      RELEASE-NOTES-es-ES.html  RELEASE-NOTES-ru-RU.html
GPL                       RELEASE-NOTES-fr-FR.html  RELEASE-NOTES-si-LK.html
HighAvailability          RELEASE-NOTES-gu-IN.html  RELEASE-NOTES-ta-IN.html
images                    RELEASE-NOTES-hi-IN.html  RELEASE-NOTES-te-IN.html
isolinux                  RELEASE-NOTES-it-IT.html  RELEASE-NOTES-zh-CN.html
LoadBalancer              RELEASE-NOTES-ja-JP.html  RELEASE-NOTES-zh-TW.html
media.repo                RELEASE-NOTES-kn-IN.html  repodata
Packages                  RELEASE-NOTES-ko-KR.html  ResilientStorage
README                    RELEASE-NOTES-ml-IN.html  RPM-GPG-KEY-redhat-beta
RELEASE-NOTES-as-IN.html  RELEASE-NOTES-mr-IN.html  RPM-GPG-KEY-redhat-release
RELEASE-NOTES-bn-IN.html  RELEASE-NOTES-or-IN.html  Server
RELEASE-NOTES-de-DE.html  RELEASE-NOTES-pa-IN.html  TRANS.TBL
RELEASE-NOTES-en-US.html  RELEASE-NOTES-pt-BR.html

6. Read what is in media.repo. Take note on the mediaid :

[root@rhel6 mnt]# cat media.repo
[InstallMedia]
name=Red Hat Enterprise Linux 6.0
mediaid=1235481171.125642
metadata_expire=-1
gpgcheck=0
cost=500

7. Create dvdrhel.repo text file in /etc/yum.repos.d/ with the following content. Please create something as follow:

[root@rhel6 ~]# vi /etc/yum.repos.d/dvdrhel.repo
[DVD-RHEL6-Repository]
mediaid=1235481171.125642
name=DVD-RHEL6 repository
baseurl=file:///mnt/Server
enabled=1
gpgcheck=0

8. Finish. You can start install, remove and update using yum command:

Method 2 :
1. Check the existing partition on your RHEL 6 server :

[root@rhel6 ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       9845280   1221632   8123528  14% /
tmpfs                   515660         0    515660   0% /dev/shm
/dev/sda1               495844     28689    441555   7% /boot

2. Create repo directory in /media :

[root@rhel6 ~]# mkdir /media/repo

3. Create 1 2 3 directory in /media/repo :

[root@rhel6 ~]# mkdir -p /media/repo/{1,2,3}

4. Mount the ISO from the DVDROM into /media/repo/1 directory :

[root@rhel6 ~]# mount -o loop /dev/cdrom /media/repo/1
[root@rhel6 ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       9845280   1221644   8123516  14% /
tmpfs                   515660         0    515660   0% /dev/shm
/dev/sda1               495844     28689    441555   7% /boot
/dev/loop0             2862360   2862360         0 100% /media/repo/1

5. Create temporary repo folder under /tmp to put required rpm’s packages for createrepo installation :

[root@rhel6 ~]# mkdir /tmp/repo 

6. Copy the require packages to install create repo :

repo :
[root@rhel6 ~]# cp /media/repo/1/Packages/createrepo* /tmp/repo
[root@rhel6 ~]# cp /media/repo/1/Packages/deltarpm* /tmp/repo
[root@rhel6 ~]# cp /media/repo/1/Packages/python-deltarpm* /tmp/repo

7. Install the rpm packages using below command :

[root@rhel6 ~]# rpm -ivh /tmp/repo/*
warning: /tmp/repo/createrepo-0.9.8-4.el6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
   1:deltarpm               ########################################### [ 33%]
   2:python-deltarpm        ########################################### [ 67%]
   3:createrepo             ########################################### [100%]

8. Go to /media/repo directory :

[root@rhel6 ~]# cd /media/repo/
[root@rhel6 repo]# pwd
/media/repo

9. Run createrepo command :

[root@rhel6 repo]# createrepo .
 2358/13395 - 1/HighAvailability/Packages/system-config-keyboard-1.3.1-3.el6.i68
iso-8859-1 encoding on Ville Skyttä  - 2.8.2-2

 5037/13395 - 1/LoadBalancer/Packages/system-config-keyboard-1.3.1-3.el6.i686.rp
iso-8859-1 encoding on Ville Skyttä  - 2.8.2-2

 7716/13395 - 1/Packages/system-config-keyboard-1.3.1-3.el6.i686.rpm
iso-8859-1 encoding on Ville Skyttä  - 2.8.2-2

10395/13395 - 1/ResilientStorage/Packages/system-config-keyboard-1.3.1-3.el6.i68
iso-8859-1 encoding on Ville Skyttä  - 2.8.2-2

13074/13395 - 1/Server/Packages/system-config-keyboard-1.3.1-3.el6.i686.rpm
iso-8859-1 encoding on Ville Skyttä  - 2.8.2-2

13395/13395 - 1/Server/Packages/zsh-4.3.10-4.1.el6.i686.rpm
Saving Primary metadata
Saving file lists metadata
Saving other metadata

10. Clean up the repo :

[root@rhel6 ~]# yum clean all
Loaded plugins: rhnplugin
Cleaning up Everything

11. Create a repo config file in /etc/yum.repos.d/ directory :

[root@rhel6 ~]# vi /etc/yum.repos.d/rhel.repo
[RHEL6-Repository]
name=RHEL6 repository
baseurl=file:///media/repo
enabled=1
gpgcheck=0

12. Start install using yum command as below :

[root@rhel6 ~]# yum install httpd
Loaded plugins: rhnplugin
This system is not registered with RHN.
RHN support will be disabled.
RHEL6-Repository                                                             | 1.3 kB     00:00 ...
RHEL6-Repository/primary                                                     | 5.4 MB     00:00 ...
RHEL6-Repository                                                                        13395/13395
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.i686 0:2.2.15-5.el6 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================
 Package            Arch              Version                   Repository                     Size
====================================================================================================
Installing:
 httpd              i686              2.2.15-5.el6              RHEL6-Repository              813 k

Transaction Summary
====================================================================================================
Install       1 Package(s)
Upgrade       0 Package(s)

Total download size: 813 k
Installed size: 2.8 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : httpd-2.2.15-5.el6.i686                                                      1/1

Installed:
  httpd.i686 0:2.2.15-5.el6

Complete!