Create Local YUM repository on CentOS 7 / RHEL 7 using DVD

ADVERTISEMENT

CentOS 7

YUM is the package management tool that helps you to install or update the package through the network or local, at the same time it provides easy method to install a package with it’s dependent packages. Configuration files are under /etc directory, /etc/yum.conf is the mail global file that contains the global options such as cache directory,log directory etc… To add new or update the existing repository, you must got to the /etc/repos.d directory and create or open a file that ends on .repo respectively.

Create Source:

Before creating new repository file, you must know the repository source ( whether the packages stored locally or remotely); Repository sources can be created either using createrepo package or mounting the DVD on the directory, mounting the DVD/CD ROM will lead to save the space on hdd used by being copied to HDD.

ADVERTISEMENT
Article will continue after the ad

Mount the CD/DVD ROM on the any directory of your wish, for testing mount it on /cdrom.

# mkdir /cdrom
# mount /dev/cdrom /cdrom

Configuration file:

Create the new repo file called cdrom.repo under /etc/repos.d directory.

# vi /etc/yum.repos.d/local.repo

Add the following details.

[LocalRepo]
name=Local Repository
baseurl=file:///cdrom
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
1. [LocalRepo] – Name of the Section.
2. name = Name of the repository
3. baseurl = Location of the package
4. Enabled = Enable repository
5 gpgcheck= Enable secure installation
6. gpgkey= Location of the key
Note:
1. gpgcheck is optional (If you set gpgcheck=0, there is no need to mention gpgkey)
2. You may find multiple repository files in /etc/yum.repos.d directory, remove the all the repo files except local.repo. This is to ensure that your system do not look for packages from CentOS or Redhat repositories.

Installation:

Before installing clear the repository cache by issuing the following command.
# yum clean all

Install the package using the yum command, let’s install the vsftpd package from the local repository.

# yum install vsftpd

Out put will be like below, it will try to cache the package information. When you give yes to download the package, it will prompt you to accept gpg signing key.

Loaded plugins: fastestmirror
LocalRepo                                                | 3.6 kB     00:00
(1/2): LocalRepo/group_gz                                  | 157 kB   00:00
(2/2): LocalRepo/primary_db                                | 2.7 MB   00:00
Determining fastest mirrors
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.x86_64 0:3.0.2-9.el7 will be installed
--> Finished Dependency Resolution
 
Dependencies Resolved
 
================================================================================
Package         Arch            Version               Repository          Size
================================================================================
Installing:
vsftpd          x86_64          3.0.2-9.el7           LocalRepo          165 k
 
Transaction Summary
================================================================================
Install  1 Package
 
Total download size: 165 k
Installed size: 343 k
Is this ok [y/d/N]: y
Downloading packages:
warning: /cdrom/Packages/vsftpd-3.0.2-9.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for vsftpd-3.0.2-9.el7.x86_64.rpm is not installed
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
Package    : centos-release-7-0.1406.el7.centos.2.3.x86_64 (@anaconda)
From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Is this ok [y/N]: y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : vsftpd-3.0.2-9.el7.x86_64                                    1/1
Verifying  : vsftpd-3.0.2-9.el7.x86_64                                    1/1
 
Installed:
vsftpd.x86_64 0:3.0.2-9.el7
 
Complete!

That’s all you have successfully configured the local repository on the machine, but it is limited to single machine where the CD or DVD is mounted. Follow the guide to setup the repository for the network installation.

ADVERTISEMENT

POSTS YOU MAY LIKE -:)

Share This Post

  • djinn

    The local repository local.repo should be in the directory /etc/yum.repos.d/ not /etc/repos.d/

    • Raj

      That is typo, thanks for notifying

  • Amril

    Hi,

    I have write such as your instruction.

    come to directory :

    cd /etc/yum.repos.d/

    create file :
    touch local.repo

    run the local.repo file

    vi local.repo

    after it, run ..

    I still get error such as “no more mirrors bla blabla”

    I run this CentOS 7 in virtualbox, and also have success mount of ISO to CentOS 7

    Please help me

    • Amril

      Hi,

      Solved.. I just disable all of online repository.
      anyway thank you so much.

      • Narayan

        How would you disable only online repository ??

        • Raj

          Sorry for the late reply, you can just move unwanted (online) .repo file out of /etc/yum.repos.d directory. once done, execute yum clean all

  • DV

    Following are the steps to create a local repo .

    1) Copy the *.iso image of OS on the server using winscp or ftp.

    2) Mount the Image on server to access its file

    #mount -o loop CentOS-6.5-x86_64-bin-DVD1.iso /mnt/.

    #df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/vg_nagiosbbops-lv_root 78G 7.3G 66G 10% /
    tmpfs 3.9G 0 3.9G 0% /dev/shm
    /dev/cciss/c0d0p1 485M 40M 420M 9% /boot
    /dev/mapper/vg_nagiosbbops-lv_home 50G 180M 47G 1% /home
    /root/CentOS-6.5-x86_64-bin-DVD1to2/CentOS-6.5-x86_64-bin-DVD1.iso 4.2G 4.2G 0 100% /mnt

    3) Copy the package file in following directory, if destination directory does not exist then creates one.

    #mkdir -p /var/www/html/yum/centos6
    #cp /mnt/Packages/* /var/www/html/yum/centos6/.
    #umount /root/CentOS-6.5-x86_64-bin-DVD1to2/CentOS-6.5-x86_64-bin-DVD1.iso

    4) If you are having another iso image, then mount next iso image and follow following steps.

    #mount -o loop CentOS-6.5-x86_64-bin-DVD2.iso /mnt/.
    #cp /mnt/Packages/* /var/www/html/yum/centos6/.
    #umount /root/CentOS-6.5-x86_64-bin-DVD1to2/CentOS-6.5-x86_64-bin-DVD2.iso

    5) Now create repo with following commands

    #cd /var/www/html/yum/centos6/.
    #rpm -ivh createrepo-0.9.9-18.el6.noarch.rpm deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm

    or

    #rpm -ivh createrepo* deltarpm* python-deltarpm* (For different OS version and packages)

    warning: createrepo-0.9.9-18.el6.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
    Preparing… ########################################### [100%]
    1:deltarpm ########################################### [ 33%]
    2:python-deltarpm ########################################### [ 67%]
    3:createrepo ########################################### [100%]

    6) #cd /var/www/html/yum/centos6/
    #createrepo .

    Spawning worker 0 with 6367 pkgs
    Workers Finished
    Gathering worker results

    Saving Primary metadata
    Saving file lists metadata
    Saving other metadata
    Generating sqlite DBs
    Sqlite DBs complete

    7) #yum clean all

    Loaded plugins: fastestmirror, security
    Cleaning repos: base extras updates
    Cleaning up Everything

    8) Rename all file under following directory
    #cd /etc/yum.repos.d/
    #mv CentOS-Vault.repo CentOS-Vault.repo_orig
    #mv CentOS-Media.repo CentOS-Media.repo_orig
    #mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo_orig
    #mv CentOS-Base.repo CentOS-Base.repo_orig

    9) Create following file for locating yum repo
    #cd /etc/yum.repos.d/
    #vi Centos-local.repo
    [Centos-local]
    name=Centos-local repository
    baseurl=file:///var/www/html/yum/centos6/
    enabled=1
    gpgcheck=0

    10) Cross check the Repo, whether working or not

    #yum update

    Loaded plugins: fastestmirror, security
    Loading mirror speeds from cached hostfile
    Centos-local | 2.9 kB 00:00 …
    Centos-local/primary_db | 4.4 MB 00:00 …
    Setting up Update Process
    No Packages marked for Update

    #yum repolist

    Loaded plugins: fastestmirror, security
    Loading mirror speeds from cached hostfile
    repo id repo name status
    Centos-local Centos-local repository 6,367
    repolist: 6,367

    • Kapil Madaan

      Thanks.

  • pklausner

    Does YUM really need to mount the CD / ISO? The openSUSE packaging takes an ISO location as repository

Shares