HDA as Local Repo Server

From Amahi Wiki
Jump to: navigation, search

Make your HDA a Local Fedora and RPMFusion Free/NonFree Updates Repo

If you have multiple machines to update in your network, this may be ideal for you. It will allow you to use your HDA as a local Fedora/RPMFusion Updates repository (hereafter referred to as repo). This was developed on Fedora 12 platform.

Once the initial setup is complete, all repos will be updated nightly with any changes automatically. Then whenever you do an update to your HDA or Fedora clients, packages will be pulled from your HDA versus a Fedora mirror over the internet.

This was developed on Fedora 12 platform, but should work on Fedora 14. Change all occurrences of "f12" and "Fedora 12" to "f14" and "Fedora 14" respectively.


NOTE: Requires a large amount of free disk space. For example, if you want to maintain 32-bit packages local, it may take up to 30GB of drive space for Fedora, RPMFusion Free and NonFree repos.

Initial Repo Setup

This setup only needs to be done once. This will set up structure for all repos built for your HDA.

  1. From the Dashboard main page, select Apps at the top.
  2. Choose Webapps
  3. Select New Web App button at the bottom
  4. Enter repo for the Name (ensure the path reflects the name correctly)
  5. Choose Create
cd /var/hda/web-apps/repo/html
vi index.html

and add the following:

<html>
<UL>
<LI><A HREF="f12">f12</A>
</UL>
</html>
  • Make directory to hold all repo files, then create symbolic link to the directory:
mkdir -p /var/hda/files/yum/f12
cd /var/hda/web-apps/repo/html
ln -s /var/hda/files/yum/f12
  • If you locate the files in a different tree, you will need the appropriate permissions. This is especially important if you build the tree by extracting from a .iso file using Nautilus. Change to a point in the tree and use:
find . -type d | xargs chmod 755
  • Disable current Fedora/RPMFusion Update repos for your HDA, then invoke local repo (Skip last 2 lines if RPMFusion repos NOT installed):
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/fedora-updates.repo
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/rpmfusion-free-updates.repo
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/rpmfusion-nonfree-updates.repo

Fedora Base OS Repo Configuration (Optional)

For this example, we will be doing the Fedora Base OS for 32-bit.

  • Make directory to hold all Fedora i386 base os:
mkdir -p /var/hda/files/yum/f12/i386/os
  • Build the OS tree

a. From the Fedora DVD:

cp -a /mount/..../* /var/hda/files/yum/f12/i386/os b. From the DVD iso:

mkdir -p /mnt/iso
mount -o loop .../Fedora-12-i386-DVD.iso /mnt/iso
cp -a /mnt/iso/* /var/hda/files/yum/f12/i386/os
umount /mnt/iso

c. From the CD isos (Note that the CD #1 can be used for a network install, see below):

mkdir -p /mnt/iso
mount -o loop .../Fedora-12-i386-disc1.iso /mnt/iso
cp -a /mnt/iso/* /var/hda/files/yum/f12/i386/os
umount /mnt/iso
mount -o loop .../Fedora-12-i386-disc2.iso /mnt/iso
cp -an /mnt/iso/* /var/hda/files/yum/f12/i386/os
umount /mnt/iso

... (continue with the other CD isos)


Fedora Updates Repo Configuration

For this example, we will be doing Fedora Updates for 32-bit. It can be adapted for 64-bit by changing all occurrences of i386 to x86_64. You may want to use one of the rsync mirrors listed here. If so, replace all occurrences of rsync://mirrors.kernel.org with the new mirror.

  • Make directory to hold all Fedora i386 Updates:
bash code
​mkdir -p /var/hda/files/yum/f12/i386/updates​
  • Download Fedora i386 Updates from repo mirror (may take a while):
bash code
​rsync -avrt --delete --exclude=debug/ --exclude=drpms/ rsync://mirrors.kernel.org/fedora/updates/12/i386/ /var/hda/files/yum/f12/i386/updates​
  • Build local repo structure index:
bash code
​yum -y install createrepo createrepo /var/hda/files/yum/f12/i386/updates​
  • Generate fedora-updates-i386.repo (point to your HDA local repository):
bash code
​vi /etc/yum.repos.d/fedora-updates-i386.repo​

and add the following:

Text
​[fedora-updates-i386-local] name=Fedora f12 - i386 - Updates failovermethod=priority baseurl=http://repo/f12/i386/updates enabled=1 gpgcheck=0​
  • Schedule nightly task to synchronize (downloads new updates) Fedora mirror with HDA repo. This will only download new udpates to your HDA, so it shouldn't take long. Recommend you stagger scheduled time for each repo added by 1 hour.:
bash code
​crontab -e​

and add the following line:

Text
​0 1 * * * rsync -auv --delete --exclude=debug/ --exclude=drpms/ rsync://mirrors.kernel.org/fedora/updates/12/i386/ /var/hda/files/yum/f12/i386/updates​
  • Refresh repo list.
bash code
​yum clean all​
  • All Fedora i386 Updates will now be retrieved locally from your HDA.


Installing Fedora Using your Repo Server

For a speeder Fedora install from your Repo server that is not prone to DVD or CD read errors (and will install up to the current update level!).

  • Boot from either the Fedora DVD or CD #1. When presented with the install choices menu, press tab and append to the boot line:
askmethod
  • When you get to the method screen, select URL and enter your repos base OS URL:
http://repo/f12/i386/os
  • When you reach the repositories page you can select the Update repository and point it to:
http://repo/f12/i386/updates


RPMFusion Updates Repo Configuration

NOTE: Amahi RPM Fusion Free and/or NonFree app MUST BE installed. For this example, we will be doing RPMFusion Free updates for 32-bit. It can be adapted for NonFree by changing all occurrences of free to nonfree and/or to 64-bit by changing all occurrences of i386 to x86_64.

  • Make directory to hold all RPMFusion Free i386 Updates:
mkdir -p /var/hda/files/yum/f12/i386/rpmfusion/free/updates
  • Download RPMFusion Free Updates from repo mirror (may take a while):
rsync -avrt --delete --exclude=debug/ --exclude=drpms/  
rsync://download1.rpmfusion.org/rpmfusion/free/fedora/updates/12/i386/ /var/hda/files/yum/f12/i386/rpmfusion/free/updates
  • Build local repo structure index:
createrepo /var/hda/files/yum/f12/i386/rpmfusion/free/updates
  • Generate fedora-rpmfusion-free-updates-i386 (point to your HDA local repository):
vi /etc/yum.repos.d/fedora-rpmfusion-free-updates-i386.repo

and add the following:

[fedora-rpmfusion-updates-i386-local]
name=Fedora 12 - RPMFusion - free - i386 - Updates
failovermethod=priority
baseurl=http://repo/f12/i386/rpmfusion/free/updates
enabled=1
gpgcheck=0
  • Schedule nightly task to synchronize (downloads new updates) RPMFusion mirror with HDA repo. This will only download new udpates to your HDA, so it shouldn't take long. Recommend you stagger scheduled time for each repo added by 1 hour.:
crontab -e

and add the following line:

0 3 * * *    rsync -auv --delete --exclude=debug/ --exclude=drpms/ rsync://download1.rpmfusion.org/rpmfusion/free/fedora/updates/12/i386/ /var/hda/files/yum/f12/i386/rpmfusion/free/updates
  • Refresh repo list.
yum clean all
  • All RPMFusion Free i386 Updates will now be retrieved locally from your HDA.


Client Repo Setup

This will need to be completed on each Fedora 12 Client in your network.

  • Disable current Fedora/RPMFusion Update repos for client, then invoke local repos (Skip last 2 lines if RPMFusion repos NOT installed):
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/fedora-updates.repo
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/rpmfusion-free-updates.repo
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/rpmfusion-nonfree-updates.repo
yum clean all

Third Party Application

This is application that allows you to maintain your own local repo server. It is currently set for CentOS but can be modified for Fedora. See yum-repo-sync for more info.