From Fedora Project Wiki

Old page
This page has been marked as "old", and likely contains content that is irrelevant or incorrect. If you can, please update this page. This page will be deleted if action is not taken.
You probably want to use Copr for this, instead:

Fedora People Repos

Fedora Packagers looking to create a repo at should follow the directions below. These repos should only be used for packages that are intended for end-user non-transient use. For example:

  • Bring a major release version to an older Fedora release
  • Testing out new software before putting it in rawhide
  • Alternate packages already available (different compile options for example)

Things it should not be used for include:

Create repo

Create Repo Layout

Log in to using ssh and run:

$ newgrp cla_done
$ new_repo

And follow the directions.

Local Repo

You must create all repodata locally on your workstation, not on If you compiled via koji --scratch builds, download those builds and follow the example below (nagios, nagios-debuginfo and nagios-devel had already been downloaded to ~/)

$ mkdir /tmp/myrepo
$ cd /tmp/myrepo
$ mkdir i386 x86_64 SRPMS
$ cp ~/nagios*3.1.2-2.fc12.i386.rpm ./i386
$ cp ~/nagios*3.1.2-2.fc12.x86_64.rpm ./x86_64
$ cp ~/nagios-3.1.2-2.fc12.src.rpm ./SRPMS
$ for dir in *; do cd $dir; createrepo ./; cd ..; done

You now have 3 local dnf|yum repos in your i386, x86_64 and SRPMS directory

It is recommended to use a dist tag when creating rpms to avoid confusion

Upload Repos

Note: to complete this step you need the REPO_PATH from the "Create Repo Layout" above.

$ rsync -avz *$REPO_PATH

Accessing new repo

Your new repo should now be listed at:

A cron job will be run regularly to add it to the list of known repos at:

Delete repo

To delete a path, just use REPO_PATH from above and remove it:

rm -rf /srv/repos/mmcgrath/nagios

Script for easy create tree local repo directory

#!/usr/bin/env bash
declare -a branches=(fedora-13 fedora-14)
declare -a rpmdir=(i386 x86_64 noarch SRPMS)

eval mkdir -pv $repoLocalDir/{"${branches[*]}"}/{"${rpmdir[*]}"}

Script for easy repo update

#!/usr/bin/env bash
declare -a branch=(fedora-13 fedora-14)
declare -a rpmdir=(i386 x86_64 noarch SRPMS)
declare -a rsyncParam=(-avtz --delete)

cd $repoLocalDir
for dir2 in "${branch[@]}"
    echo -e "\033[31mUpdate $dir2 repos:\033[0m"
    cd $dir2
    for dir3 in "${rpmdir[@]}"
        echo -e "\033[34m\t* $dir3:\033[0m"
        cd $dir3
        createrepo ./
        rsync "${rsyncParam[@]}" ./* $$fasLogin/$repoName/$dir2/$dir3
        cd ..
    cd ..
cd ..

In my example i put all fedora branch in ~/repos directory so maybe you need modify this. You can use sed for quick replace as:

$ sed -i "s|repoLocalDir=~/repos|repoLocalDir=newDirName|"

And you need replace bioinfornatics by to own fas login

$ sed -i "s|fasLogin=bioinfornatics|fasLogin=fasLoginName|"

In last my repos is named D so you need replace this to:

$ sed -i "s|repoName=D|repoName=myRepoName|"