DR650's Interest Page


Fedora createrepo and kickstart group metadata

Essentially you need to :

  1. Mount the Fedora 8 iso somewhere
  2. Copy the Packages (which is a subset of the "Everything" repo) somewhere
  3. Rsync the "Everything" repo from the web to your local repo (it's too much to fit on a single release DVD)
  4. Copy the Fedora-8-comps.xml into the repodata directory
  5. Run createrepo with the proper syntax, in the proper location, to create the group metadata for kickstart software groups

Mount the Fedora 8 iso somewhere. For our discussion, we'll assume the F8 DVD iso is out on a USB drive and we'll mount the image on a directory in /tmp:
# mkdir /tmp/a
# mount -o loop /media/USBDISK80/Fedora-8-dvd-i386/Fedora-8-i386-DVD.iso /tmp/a
# ls /tmp/a/repodata/Fedora-8-comps.xml
/tmp/a/repodata/Fedora-8-comps.xml

Copy the Packages. Now we copy the basic Fedora Packages out to our repository location.
# mkdir -p /media/USBDISK80/f8/repo/fedora-linux-releases/8/Everything/i386/os
# cp -rp /tmp/a/Packages /media/USBDISK80/f8/repo/fedora-linux-releases/8/Everything/i386/os

Rsync the "Everything" repo from the web to your local repo. The "Everything" repo is too large to deliver on a single DVD, so the official Fedora DVD contains a subset of the most used (or required) packages. To have "Everything" locally, we rsync the "Everything" repo from the web to our local subset of packages:

# /bin/nice /usr/bin/rsync --archive --update --verbose --progress --delete --stats --partial \
--exclude=debug/ \
rsync://mirror.stanford.edu/mirrors/fedora/linux/releases/8/Everything/i386/os/Packages/ \
/media/USBDISK80/f8/repo/fedora-linux-releases/8/Everything/i386/os/Packages/ \
> /tmp/rsync_f8_everything.log

Copy the Fedora-8-comps.xml into the repodata directory. To enable software groups via kickstart (for example "@office") we need the comps.xml file. Copy it into the repodata directory:

# mkdir /media/USBDISK80/f8/repo/fedora-linux-releases/8/Everything/i386/os/repodata
# cp /tmp/a/repodata/Fedora-8-comps.xml /media/USBDISK80/f8/repo/fedora-linux-releases/8/Everything/i386/os/repodata

We're done with the DVD iso, so you might want to umount it and remove the /tmp/a directory.

Run createrepo. Now run createrepo with the proper syntax, in the proper location, to setup the releases packages set with the kickstart group metadata:

# cd /media/USBDISK80/f8/repo/fedora-linux-releases/8/Everything/i386/os
# createrepo -d -g ./repodata/Fedora-8-comps.xml .
(note : the two PWD directory dots in the above command are required)

That's it. Once this is done, your local machines can hit your local repo and avoid hitting the servers on the web. Also you can use kickstart scripts, with the group syntax, to setup your machines. This only needs to be done once per release...so there is not a lot of need to version control the package set. However, the updates repo tends to come in hot and heavy and that is definately worth carefully monitoring before unleashing a slew of updates on your local machines. Mirroring the "Updates" repo is very similar to the above, however there is no concept of a group syntax for them and no special comps.xml file. The process for rsync'ing the "Updates" repo is well documented on the web, so I won't repeat it here. One final note...if you are making livecd's or otherwise using kickstart files don't make the mistake of thinking the "$releasever" variable is available to your kickstart repo directives--it isn't. Only "$basearch" is present. You will need to hardcode the "8".