# Create a Yum Repository from ISO Images

This page describes how to create a local yum repository from ISO images stored on the local hard disk. This repository can then be used for the [base] repository in your yum configuration, making package installation quick and easy.

## Fedora Core 3, Fedora Core 4

1. Create a yum repository from your DVD
   - # mkdir -p /path/to/your/repo/dvd
   - # mount -r -o loop /path/to/FC3-i386-DVD.iso /path/to/your/repo/dvd
   - # cd /path/to/your/repo
   - # rpm -Uvh dvd/Fedora/RPMS/createrepo*
   - # createrepo .
2. Ensure that the DVD ISO image is mounted at every reboot
   - edit /etc/fstab and add new line:
     /path/to/FC3-i386-DVD.iso /path/to/your/repo/dvd iso9660 ro,loop 0 0
3. Configure yum to use your new repository
   - edit /etc/yum.repos.d/fedora.repo
   - comment out any line starting with baseurl or mirrorlist
   - add a new line:
     baseurl=file:///path/to/your/repo

You should then be able to use your local repository to install new packages etc.

## Fedora Core 5

It's particularly useful to set up a local [core] repository in Fedora Core 5 because pirut, the standard GUI package manager application, is built on yum and will hence take files from your local repository instead of having to go to the Internet to get them - pirut currently doesn't support installation from CD/DVD natively.

### Using DVD ISO

In Fedora Core 5, the installer is based on yum and so there is actually yum repository metadata present on the DVD. This makes the process of setting up the local repository even easier, since you don't need to create the metadata yourself.

1. Create a directory for your repository and mount the DVD ISO there:
   - # mkdir -p /path/to/your/repo
   - # mount -r -o loop /path/to/FC-5-i386-DVD.iso /path/to/your/repo
2. Ensure that the DVD ISO image is mounted at every reboot
   - edit /etc/fstab and add new line:
     /path/to/FC-5-i386-DVD.iso /path/to/your/repo iso9660 ro,loop 0 0
3. Configure yum to use your new repository
   - edit /etc/yum.repos.d/fedora-core.repo
   - comment out any line starting with baseurl or mirrorlist in the [core] repository section at the top
   - add a new line:
     baseurl=file:///path/to/your/repo

### Using CD ISO images

Note: I don't have the CD ISO images myself so I haven't tested this procedure with Fedora Core 5.

Creating a repository from CD ISO images is somewhat more complicated, since there are multiple images. There are a number of approaches that could be taken to work around this:

- Use something like jigdo to create a single image equivalent to the DVD ISO
- Mount all of the CD images simultaneously and create a symlink farm to the packages on each CD
- Copy the packages from the CD images and make a local repo that's independent of the original CD images

I've chosen to take the latter approach here.

1. Create a directory on your system to hold the repository. It will need to be on a filesystem that has at least 3GB of free space. Then copy the RPM packages and comps.xml file from your CD images into it.
   - # mkdir -p /path/to/your/repo/RPMS
   - # cd /path/to/your/repo
   - # mkdir disc1 disc2 disc3 disc4 disc5
   - # mount -r -o loop /path/to/FC-5-i386-disc1.iso disc1
   - # mount -r -o loop /path/to/FC-5-i386-disc2.iso disc2
   - # mount -r -o loop /path/to/FC-5-i386-disc3.iso disc3
   - # mount -r -o loop /path/to/FC-5-i386-disc4.iso disc4
   - # mount -r -o loop /path/to/FC-5-i386-disc5.iso disc5
   - # cp disc*/Fedora/RPMS/* RPMS
   - # cp disc1/repodata/comps.xml .
2. You no longer need the CD images, so you can unmount them and remove the mountpoint directories.
   - # umount disc1 disc2 disc3 disc4 disc5
   - # rmdir disc1 disc2 disc3 disc4 disc5
3. Create the repository metadata.
   - # rpm -Uvh RPMS/createrepo*
   - # createrepo -g comps.xml .
4. Configure yum to use your new repository
   - edit /etc/yum.repos.d/fedora-core.repo
   - comment out any line starting with baseurl or mirrorlist in the [core] repository section at the top
   - add a new line:
     baseurl=file:///path/to/your/repo

### Using Add/Remove Software With No Network Connection

If you want to use the Add/Remove Software application (pirut) with no network connection, you'll need to disable all of the yum repositories apart from your local one. By default, the only enabled repositories are core (which is now served by your local repository), updates, and extras. You can disable these repositories by changing the line enabled=1 to enabled=0 in /etc/yum.repos.d/fedora-updates.repo and /etc/yum.repos.d/fedora-extras.repo respectively.

If at a later time you have an Internet connection available and would like to update your system or install something from Fedora Extras, you can enable these repositories on the yum command line without needing to edit the .repo files again, e.g.:

# yum --enablerepo=updates --enablerepo=extras update
# yum --enablerepo=updates --enablerepo=extras install somepackage

Valid HTML 4.01