How to Set up a YUM repository on Centos 7

In this article, we want to teach you How to set up a YUM repository on Centos 7.

A Linux repository is a storage location from which your system gets back and installs OS updates and applications. Each repository is a collection of software hosted on a remote server and intended to be used for installing and updating software packages on Linux systems.

Yum is a free and open-source command-line package-management utility for computers running the Linux operating system using the RPM Package Manager.

Steps To Set up a YUM Repository on Centos 7

To set up Yum repositories on Centos 7 you need to log in to your server as a non-root user with sudo permissions.

If you don’t know how to do that, check our article about the Initial server setup with Centos 7.

Also, you need to set up a basic firewall. To do this, you can follow our guide on Setting up a Firewall with Firewalld on Centos 7.

Configure Network Access on Centos 7

You need to configure the system for network access. Yum typically delivers files over FTP or HTTP.

If you have configured an Apache web server or an FTP server follow these steps:

Install the Apache web services package to use HTTP on Centos 7 by running the following command:

sudo yum install httpd

If you use FTP run the following command instead:

sudo yum install vsftpd

Note: Open the correct port on your firewall. 80 for HTTP and 21 for FTP.

# sudo firewall-cmd --zone=public --add-port=80/tcp
# sudo firewall-cmd --zone=public --add-port=21/tcp

Reload the firewall to apply the new rules:

sudo firewall-cmd --reload

Also, you can use Nginx as a web server instead of Apache. You can check our article about how to install Nginx on Centos 7.

How To Create a YUM Repository on Centos 7

To create a YUM repository you can use the “createrepo” software package. Run the following command:

sudo yum install createrepo

Enter “y” to download the package. You will see something like this in your output:

createrepo.noarch 0:0.9.9-28.el7
Dependency Installed:
deltarpm.x86_64 0:3.6-3.el7 python-deltarpm.x86_64 0:3.6-3.el7

How To Create a Directory to Store the Repositories on Centos 7

At this point, you need to create a directory to store the repositories.

For an HTTP repository, run the following command:

sudo mkdir –p /var/www/html/repos/{base,centosplus,extras,updates}

For an FTP repository, run the command below:

sudo mkdir –p /var/ftp/repos

How To Synchronize HTTP Repositories on Centos 7

Here you need to download a local copy of the official CentOS repositories to your server. This allows systems on the same network to install updates more efficiently.

Run the commands below:

sudo reposync -g -l -d -m --repoid=base --newest-only --download-metadata --download_path=/var/www/html/repos/
sudo reposync -g -l -d -m --repoid=centosplus --newest-only --download-metadata --download_path=/var/www/html/repos/
sudo reposync -g -l -d -m --repoid=extras --newest-only --download-metadata --download_path=/var/www/html/repos/
sudo reposync -g -l -d -m --repoid=updates --newest-only --download-metadata --download_path=/var/www/html/repos/

Note: If you are using FTP, replace your FTP directory in the commands above.

How To Create a New Repository on Centos 7

You can use ‘createrepo’ to create a repository on Centos 7.

To create a repository for HTTP run the command below:

sudo createrepo /var/www/html

You can use the following command for FTP:

sudo createrepo /var/ftp

Set up Yum Repository on the Client Machine

You need to switch to the client system and login as a non-root user with sudo permissions.

Then, you’ll need to prevent Yum from downloading from the wrong location. To do this, move the default yum repository files with the following command:

mv /etc/yum.repos.d/*.repo /tmp/

Here you can create and edit a new config file with the below command:

sudo vi /etc/yum.repos.d/remote.repo

When you get into the file put these commands in it:

name=RHEL Apache 

Save and close the file.

Note: For FTP you should replace the Apache and HTTP with FTP in the commands above.

Now you can test the configuration in your client system. Run a command to install a package with YUM. for example:

sudo yum install httpd


At this point, you learn how to create yum repositories and create a directory to store them, you learn to synchronize HTTP and FTP repositories and you can set up a yum repository on a client system.

Hope you enjoy this article about How to set up a YUM repository on Centos 7.

Please subscribe to us on Facebook and Twitter.


Please enter your comment!
Please enter your name here
Captcha verification failed!
CAPTCHA user score failed. Please contact us!
Latest Articles


Most Popular