How to Create Local Yum Repo on CentOS 7
Step 1: Configure Network Access
yum install httpd
Step 2: Create Yum Local Repository
yum install createrepo
yum install yum-utils
Step 3: Create a Directory to Store the Repositories
mkdir –p /var/www/html/repos/{base,centosplus,extras,updates}
Step 4: Synchronize HTTP Repositories
reposync -g -l -d -m –repoid=base –newest-only –download-metadata –download_path=/var/www/html/repos/
reposync -g -l -d -m –repoid=centosplus –newest-only –download-metadata –download_path=/var/www/html/repos/
reposync -g -l -d -m –repoid=extras –newest-only –download-metadata –download_path=/var/www/html/repos/
reposync -g -l -d -m –repoid=updates –newest-only –download-metadata –download_path=/var/www/html/repos/
Step 5: Create the New Repository
createrepo /var/www/html
Step 6: Setup Local Yum Repository on Client System
mv /etc/yum.repos.d/*.repo /tmp/
Create and edit a new config file:
nano /etc/yum.repos.d/remote.repo
In the new file, enter the command (replacing the IP address with the IP address of your server):
[remote]
name=RHEL Apache
baseurl=http://IP Address
enabled=1
gpgcheck=0
Finally, save the file and exit.
]
Test the Configuration
While still on the client system, run a command to install a package with the yum package manager:
yum install httpd
For NGINX
#yum install nginx -y
#systemctl start nginx
#systemctl enable nginx
#systemctl status nginx
#yum install createrepo yum-utils
#mkdir -p /var/www/html/repos/{base,centosplus,extras,updates}
# reposync -g -l -d -m –repoid=base –newest-only –download-metadata –download_path=/var/www/html/repos/
# reposync -g -l -d -m –repoid=centosplus –newest-only –download-metadata –download_path=/var/www/html/repos/
# reposync -g -l -d -m –repoid=extras –newest-only –download-metadata –download_path=/var/www/html/repos/
# reposync -g -l -d -m –repoid=updates –newest-only –download-metadata –download_path=/var/www/html/repos/
# createrepo -g comps.xml /var/www/html/repos/base/
# createrepo -g comps.xml /var/www/html/repos/centosplus/
# createrepo -g comps.xml /var/www/html/repos/extras/
# createrepo -g comps.xml /var/www/html/repos/updates/
# vim /etc/nginx/conf.d/repos.conf
server {
listen 80;
server_name name or ip for server;
root /var/www/html/repos;
location / {
index index.php index.html index.htm;
autoindex on; #enable listing of directory index
}
}
For Cron Script
#vim /etc/cron.daily/update-localrepos
#!/bin/bash
##specify all local repositories in a single variable
LOCAL_REPOS=”base centosplus extras updates”
##a loop to update repos one at a time
for REPO in ${LOCAL_REPOS}; do
reposync -g -l -d -m –repoid=$REPO –newest-only –download-metadata –download_path=/var/www/html/repos/
createrepo -g comps.xml /var/www/html/repos/$REPO/
done
#chmod 755 /etc/cron.daily/update-localrepos
#vim /etc/yum.repos.d/local-repos.repo
[local-base]
name=CentOS Base
baseurl=http://name or ip of server/base/
gpgcheck=0
enabled=1
[local-centosplus]
name=CentOS CentOSPlus
baseurl=http://name or ip of server/centosplus/
gpgcheck=0
enabled=1
[local-extras]
name=CentOS Extras
baseurl=http://name or ip of server/extras/
gpgcheck=0
enabled=1
[local-updates]
name=CentOS Updates
baseurl=http://name or ip of server/updates/
gpgcheck=0
enabled=1
Test the configuration
#yum repolist
#yum repolist all
centos 7