This article is about Setting up a Local yum repository to be used for local network. Local Yum Repository can save internet bandwidth downloading all your packages from the local repository over FAST LAN Network.
If You want to use it in your network the best option to be used is using Httpd – Apache so the yum repository will be acessible via web.
[root@localhost ~]# ps ax | grep http 3617 ? Ss 0:00 /usr/sbin/httpd 3621 ? S 0:00 /usr/sbin/httpd 3622 ? S 0:00 /usr/sbin/httpd 3623 ? S 0:00 /usr/sbin/httpd 3624 ? S 0:00 /usr/sbin/httpd 3625 ? S 0:00 /usr/sbin/httpd 3626 ? S 0:00 /usr/sbin/httpd 3627 ? S 0:00 /usr/sbin/httpd 3628 ? S 0:00 /usr/sbin/httpd 3629 ? S 0:00 /usr/sbin/httpd
If it is not running then Start HTTPD
[root@localhost ~]# /etc/init.d/httpd start
or for CentOS 7,Red Hat 7:
[root@localhost ~]# systemctl start httpd
and if you haven’t installed httpd yet then you can do it by
[root@localhost ~]# yum install httpd
Now make httpd start at every system boot automatically by putting it in system Startup.
[root@localhost ~]# chkconfig --levels 235 httpd on
We will use Apache’s default Document root to store the packages, Default DocumentRoot for apache is /var/www/html
.
Create a dir in the Document Root named yum. We will create two more directories base-pkg : This would contain all the packages of the Linux Distribution you are making repository for. updates : This would contain all the update packages for your Linux Distribution
[root@localhost ~]# mkdir /var/www/html/yum [root@localhost ~]# mkdir /var/www/html/yum/base-pkg [root@localhost ~]# mkdir /var/www/html/yum/updates
To build you yum repository the easy way is copy all the contents from the Linux Distribution DVD/CD Media to the repository location in this case /var/www/html/yum, Make sure that you copy all the contents (Packages) into the base-pkg directory. If you have a Media follow the Steps Below
[root@localhost ~]# mount /dev/cdrom /mnt [root@localhost ~]# cp -v /mnt/Packages/* /var/www/html/yum/base-pkg/ [root@localhost ~]# umount /mnt
Now we need a tool “createrepo” which would create a repository for the linux distibution. By default it is comes installed with all Distribution of linux, but if its not installed use yum to install it. Check if createrepo is installed
[root@localhost ~]# which createrepo /usr/bin/createrepo
If you get the above result skip the next step and start Building the repository if its not installed then install it
[root@localhost ~]# yum install createrepo
[root@localhost ~]# createrepo /var/www/html/yum/base-pkg/ [root@localhost ~]# ls -l /var/www/html/yum/base-pkg/repodata/ -rw-r--r-- 1 root root 2227275 2010-02-18 11:51 filelists.xml.gz -rw-r--r-- 1 root root 6487453 2010-02-18 11:51 other.xml.gz -rw-r--r-- 1 root root 747714 2010-02-18 11:51 primary.xml.gz -rw-r--r-- 1 root root 951 2010-02-18 11:51 repomd.xml
The Second step building repository is updating your updates directory for all new packages. Go to the Main website of the Linux Distribution you are preparing repostory for and check the updates link or use the below links
As per you distribution rsync the data to the updates directory
FOR CENTOS RUN
[root@localhost ~]# rsync -avrt rsync://centos.arcticnetwork.ca/centos/5.4/updates/i386/RPMS/ --exclude=debug/ /var/www/html/yum/updates/ <code> FOR CENTOS RUN <code> [root@localhost ~]# rsync -avrt rsync://mirror.aarnet.edu.au/fedora/linux/updates/12/i386/ --exclude=debug/ /var/www/html/yum/updates/
To get the updates regularly you can put the above command inthe crontab so that you updates directories are updated periodically
[root@localhost ~]# crontab -e * * 2 * * rsync -avrt rsync://centos.arcticnetwork.ca/centos/5.4/updates/i386/RPMS/ --exclude=debug/ /var/www/html/yum/updates/
You have created local yum repository, now to make clients on your network to use the local repository, create a file mylocal.repo in /etc/yum.repos.d
[root@localhost ~]# vim /etc/yum.repos.d/mylocal.repo
Add the Following Lines
THAT’s IT, Now you can update all your packages over high Speed Lan connectivity instead of Internet.