A very special thank you to David Cary Hart of TQMcube.com, who authored this tutorial for the benefit of the Fedora community.
If you have several computers to update via yum then you should consider creating a local repository. Not only does this conserve bandwidth (updates are downloaded only once) but it improves the responsiveness of yum for installing additional programs. Just about anything that you do with yum is considerably faster (LAN vs. WAN). The downside is that you will probably download updates that are unnecessary for any of your machines. You can reduce this with additional "exclude" statements like "--exclude=*i18*" (see man rsync).
Degree of Difficulty: Easy
Requires: Approximately 5 gb of Disk Space
Package: createrepo (su yum -y install createrepo)
mkdir /var/www/html/yum mkdir /var/www/html/yum/base mkdir /var/www/html/yum/updates
"createrepo /var/www/html/yum/base"
This might take some time, depending upon the speed of your processor(s) and HD. On successful conclusion, createrepo should create a directory /repodata. The contents should be:
filelists.xml.gz, other.xml.gz, primary.xml.gz, repomd.xml
A list is at http://fedora.redhat.com/download/mirrors.html and these are identified with rsync. For example: "rsync://distro.ibiblio.org/fedora-linux-core/". The mirrors share a common structure for updates. Simply append /updates/<d version>/<base arch>. Using FC4, this becomes:
rsync://distro.ibiblio.org/fedora-linux-core/updates/4/i386
"rsync -av rsync://distro.ibiblio.org/fedora-linux-core/updates/4/i386 -exclude=debug/ /var/www/html/yum/upates"
This will create a complete update repository at /var/www/html/yum/upates/i386. The repodata directory will be created with all of the headers. If you feel that you need the debuginfo rpms you can exclude the exclude statement. At this point you can create a cron job for the rsync command, above. Only new updates and headers will be downloaded to your repository. Optionally, one could add the "-H" flag to preserve hardlinks, and the "--delete" option to save space.
[updates-released] name=Fedora Core $releasever - $basearch - Released Updates #mirrorlist=http://fedora.redhat.com/download/mirrors/updates-released-fc$releasever baseurl=http://192.168.0.xx/yum/updates/$basearch/ enabled=1 gpgcheck=1 [base] name=Fedora Core $releasever - $basearch - Base baseurl=http://192.168.0.xx/yum/Fedora/core/$releasever/base/RPMS #mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-$releasever enabled=1 gpgcheck=1
On the machine with the repository, substitute localhost for the IP address.
Thank you David!
This page was generously written and donated to the community by David Cary Hart.
* Minor Grammer Last Updated 2008-02-24 by Dotan Cohen
* HTML Last Updated 2008-02-24 by Dotan Cohen
* Implemented rsync suggestions by Erik Logtenberg on 2008-04-17