How to create a local mirror of the latest update for Red Hat Enterprise Linux 5, 6 and 7 without using Satellite server?

Solution Verified - Updated -

Environment

  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 5
  • Red Hat Network (RHN)
  • Red Hat Subscription Management (RHSM)
  • reposync

Issue

  • What is reposync utility and how to use it?
  • How to create a local mirror of the latest update for Red Hat Enterprise Linux 5, 6 or 7 without using Satellite server
  • Need to download all packages / rpms from specific channel locally
  • How to make a local repository

Resolution

For RHEL 8 and 9 refer How to create a local mirror of the latest update for Red Hat Enterprise Linux 8 and 9 without using Satellite server?

RHEL 5

# mkdir /var/repo
# reposync --gpgcheck -l --repoid=rhel-5-server-els-rpms --download_path=/var/repo --downloadcomps
# cd /var/repo/rhel-5-server-els-rpms
# createrepo -v /var/repo/rhel-5-server-els-rpms
# yum clean all
# yum list-sec
# find /var/cache/yum/ -name *updateinfo.xml*
# mv /var/cache/yum/rhel-5-server-els-rpms/365ae03ca85bb9d3bc509ea9129d1d3fb9a18381-updateinfo.xml.gz /tmp
# cd /tmp
# gzip -d 365ae03ca85bb9d3bc509ea9129d1d3fb9a18381-updateinfo.xml.gz
# mv 365ae03ca85bb9d3bc509ea9129d1d3fb9a18381-updateinfo.xml updateinfo.xml
# cp updateinfo.xml /var/repo/rhel-5-server-els-rpms/repodata/
# modifyrepo /var/repo/rhel-5-server-els-rpms/repodata/updateinfo.xml /var/repo/rhel-5-server-els-rpms/repodata/

RHEL 6,7

Install the required packages

  • Install the yum-utils and createrepo packages on the registered system.

    # yum install yum-utils createrepo
    

Create a basic local repository

Note: Change <repo-id> to the repository you intend to sync

  • Sync all the packages from a specified repository to a specified directory

    # reposync --gpgcheck -l --repoid=<repo-id>
    for example:
    # reposync --gpgcheck -l --repoid=rhel-6-server-rpms --download_path=/var/www/html
    
  • In the targeted directory, there will be a new directory named after the Repository ID. All the downloaded packages will be inside this directory.

    # cd /var/www/html/<repo-id>
    # createrepo -v /var/www/html/<repo-id>
    

Create a local repository that allows clients to use groups

How to download all the metadata for the repository that is being synced which will allow the use of various plugins such as 'yum groupinstall'

  • On RHEL6 and later, reposync supports the --download-metadata and --downloadcomps options. For example:

    # reposync --gpgcheck -l --repoid=repo-id --downloadcomps --download-metadata
    for example:
    # reposync --gpgcheck -l --repoid=rhel-6-server-rpms --download_path=/var/www/html --downloadcomps --download-metadata
    
  • To have access to the group data for the newly synced repo, please run the createrepo command as follows:

    # cd /var/www/html/<repo-id>
    # createrepo -v  /var/www/html/<repo-id>/ -g comps.xml
    

Modify the repodata to define which packages are security related.

  • These steps require that the createrepo command has already been run.

    # yum clean all
    # yum list-sec
    # find /var/cache/yum/ -name updateinfo.xml            ##For RHEL 5 use '-name *updateinfo.xml*'
    
  • From the find command above, identify the updateinfo.xml that matches the <repo-id> that you ran reposync against and move that file into your repodata directory.

    # cp /var/cache/yum/<repo-id-path>/updateinfo.xml /var/www/html/<repo-id>/repodata/updateinfo.xml
    # modifyrepo /var/www/html/<repo-id>/repodata/updateinfo.xml /var/www/html/<repo-id>/repodata
    
  • How to host a repository using http/https/ftp/nfs ?


NOTE:

  • To keep the sync current, for example, cronjobs can be used. The createrepo command supports --update to efficiently update existing repositories.
  • The locally created repository is typically used by other RHEL clients via LAN, for example via HTTP/HTTPS (for example provided by the apache webserver which is part of RHEL), via FTP (i.e. vsftpd) or NFS (nfs-utils package). Share this local repository with the offline systems to update the offline systems.
  • reposync utility can only mirror repositories which the system is entitled to.
  • Related information How do I delete old packages in local repository server?
  • For RHEL 7.7+, The Red Hat Customer Portal assumes that if all Red Hat provided CDN repositories are disabled the system lacks access to the latest content, and will not show errata information. If you need/want to see a systems errata information in the Red Hat Customer Portal, subscription manager must have at least one official redhat repository enabled. Note that only the enabled repositories are considered as part of the errata applicability calculation.
  • You can create a copy of a directory which is prepared as YUM repository, and then without adding further packages to that repo have clients use the repo as a "frozen" set of packages. Creating such copies needs extra storage, but as the files are duplicates of existing packages, as long as the involved files are on the same file system, hardlinks can be used to then reduce the requirements.

  • If there are any issues after following above steps, open a Red Hat Technical Support Case and share below details.

    1. Output of the following command :
    # tree /directory_path_of_the_repository
    
    1. Generate and provide SOS report from Repo server and client system.

Root Cause

Red Hat provides a utility called reposync which can be used to download the packages from the CDN. In order to download all packages from a specific channel, the system should be subscribed to that channel. If the system is not subscribed to the required channel then reposync will not be able to download and sync those packages on local system.

Diagnostic Steps

  • createrepo-0.9.9-26.el6.noarch which is part of RHEL6.9GA has an issue regarding --update, refer to bz1434369 for details.

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments