Download Yum CentOS Repositories Locally using reposync Command


reposync is used to download an entire remote yum repository or a set of remote repositories. It will also synchronize changes in a repository with a local directory.

Why reposync is preferred  over an rsync based approach …?
  • reposync by default uses HTTP , so it is easier on firewalls (Most of time outbound ports 80/443 are opened in firewall)
  • reposync can use multiple mirrors, as specified in the 'mirrorlist' directive. So there is no longer a dependency on a single server on the remote end to be up and running
  • There are significantly more HTTP mirrors than rsync ones, so reposync scripts can play nicely and distribute the load over a larger number of server

In this tutorials we will download CentOS 6.2 yum repositories locally on my ftp server  and will make available these repositories to my data center centos machines.

Step:1  Download & install reposync rpm

# wget
# rpm -ivh yum-repo-sync-2.0-0.noarch.rpm

Step:2 Create a Directory locally

# mkdir /var/ftp/pub/Centos-6.2-RPMS

Open the file  "cat /etc/yum.repos.d/CentOS-Base.repo" Copy the name of repositories you want to download and Run the below Command.

# nohup reposync -r base -p /var/ftp/pub/Centos-6.2-RPMS/  &

A directory with name base will be created automatically under /var/ftp/pub/Centos-6.2-RPMS. We can check the progress of downloading by using below command

# tail -f nouhup.out

Similarly download all the repositories using above reposync Command , just replace  the name of "base" with  new repository.

Note: To get all the updates after downloading repositories , run below command under the directory  /var/ftp/pub/Centos-6.2-RPMS

# reposync --repoid=base  --repoid=updates  --repoid=extras

Step:3 Create a repomd (xml-based rpm metadata) repository from a set of rpms

# cd /var/ftp/pub/Centos-6.2-RPMS
# createrepo -v base

Similarly run the above command for all downloaded repositories.

Step:4  Create a repository file under "/etc/yum.repos.d/"

First Move all repositories to another folder and create a file.

 # vi server.repo


In this tutorials we are assuming ftp service up and running.

Step:5 Now transfer server.repo fils to all centos-6.2 machines.

 # scp server.repo  root@<ip-address>:/etc/yum.repos.d/

For testing , run the below command on Centos Machines :

 # yum list all

It will list all packages corresponding to repositories.