From Fedora Project Wiki

(note on using ssh)
(9 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{autolang|base=yes}}
= Fedora People Repos =
= Fedora People Repos =
Fedora Packagers looking to create a repo at http://repos.fedorapeople.org/ should follow the directions below.  These repos should only be used for packages that are intended for end-user non-transient use.  For example:
Fedora Packagers looking to create a repo at http://repos.fedorapeople.org/ should follow the directions below.  These repos should only be used for packages that are intended for end-user non-transient use.  For example:
Line 15: Line 16:
== Create Repo Layout ==
== Create Repo Layout ==


Log in to fedorapeople.org and run:
Log in to fedorapeople.org using ssh and run:


<pre>
<pre>
$ newgrp cla_done
$ new_repo
$ new_repo
</pre>
</pre>
Line 64: Line 66:


<pre>
<pre>
rm -rf /srv/repo/mmcgrath/nagios
rm -rf /srv/repos/mmcgrath/nagios
</pre>
</pre>


== Script for easy repo update ==
== Script for easy create tree local repo directory ==
<pre>
<pre>
#!/usr/bin/env bash
#!/usr/bin/env bash
echo -e "\033[31mUpdate Fedora 13 repos:\033[0m"
repoLocalDir=~/repos
cd ~/repos/fedora-13
declare -a branches=(fedora-13 fedora-14)
for dir in *; do cd $dir; createrepo ./; cd ..; done
declare -a rpmdir=(i386 x86_64 noarch SRPMS)
echo -e "\033[34m\t* i386:\033[0m"
rsync -avtz --delete ~/repos/fedora-13/i386/*    bioinfornatics@fedorapeople.org:/srv/repos/bioinfornatics/D/fedora-13/i386
echo -e "\033[34m\t* x86_64:\033[0m"
rsync -avtz --delete ~/repos/fedora-13/x86_64/*  bioinfornatics@fedorapeople.org:/srv/repos/bioinfornatics/D/fedora-13/x86_64
echo -e "\033[34m\t* SRPMS:\033[0m"
rsync -avtz --delete ~/repos/fedora-13/SRPMS/*  bioinfornatics@fedorapeople.org:/srv/repos/bioinfornatics/D/fedora-13/SRPMS
echo -e "\033[34m\t* noarch:\033[0m"
rsync -avtz --delete ~/repos/fedora-13/noarch/*  bioinfornatics@fedorapeople.org:/srv/repos/bioinfornatics/D/fedora-13/noarch


echo -e "\033[31mUpdate Fedora 14 repos:\033[0m"
IFS=",$IFS"
cd ~/repos/fedora-14
eval mkdir -pv $repoLocalDir/{"${branches[*]}"}/{"${rpmdir[*]}"}
for dir in *; do cd $dir; createrepo ./; cd ..; done
</pre>
echo -e "\033[34m\t* i386:\033[0m"
rsync -avtz --delete ~/repos/fedora-14/i386/*    bioinfornatics@fedorapeople.org:/srv/repos/bioinfornatics/D/fedora-14/i386
echo -e "\033[34m\t* x86_64:\033[0m"
rsync -avtz --delete ~/repos/fedora-14/x86_64/*  bioinfornatics@fedorapeople.org:/srv/repos/bioinfornatics/D/fedora-14/x86_64
echo -e "\033[34m\t* SRPMS:\033[0m"
rsync -avtz --delete ~/repos/fedora-14/SRPMS/*  bioinfornatics@fedorapeople.org:/srv/repos/bioinfornatics/D/fedora-14/SRPMS
echo -e "\033[34m\t* noarch:\033[0m"
rsync -avtz --delete ~/repos/fedora-14/noarch/*  bioinfornatics@fedorapeople.org:/srv/repos/bioinfornatics/D/fedora-14/noarch


== Script for easy repo update ==
<pre>
#!/usr/bin/env bash
fasLogin=bioinfornatics
repoLocalDir=~/repos
repoName=D
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[@]}"
do
    echo -e "\033[31mUpdate $dir2 repos:\033[0m"
    cd $dir2
    for dir3 in "${rpmdir[@]}"
    do
        echo -e "\033[34m\t* $dir3:\033[0m"
        cd $dir3
        createrepo ./
        rsync "${rsyncParam[@]}" ./* $fasLogin@fedorapeople.org:/srv/repos/$fasLogin/$repoName/$dir2/$dir3
        cd ..
    done
    cd ..
done
cd ..
</pre>
</pre>


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:
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:
<pre>
<pre>
$ sed -i "s|repos|newDirName|"
$ sed -i "s|repoLocalDir=~/repos|repoLocalDir=newDirName|"
</pre>
</pre>


And you need replace bioinfornatics by to own fas login
And you need replace bioinfornatics by to own fas login
<pre>
<pre>
$ sed -i "s|bioinfornatics|fasLoginName|"
$ sed -i "s|fasLogin=bioinfornatics|fasLogin=fasLoginName|"
</pre>
</pre>


In last my repos is named D so you need replace this to:
In last my repos is named D so you need replace this to:
<pre>
<pre>
$ sed -i "s|/D/|/myRepoName/|"
$ sed -i "s|repoName=D|repoName=myRepoName|"
</pre>
</pre>


[[Category: Package Maintainers]]
[[Category: Package Maintainers]]

Revision as of 12:22, 18 April 2013

Fedora People Repos

Fedora Packagers looking to create a repo at http://repos.fedorapeople.org/ 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 fedorapeople.org 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 fedorapeople.org. 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 yum repos in your i386, x86_64 and SRPMS directory

Note.png
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 * fas_name@fedorapeople.org:$REPO_PATH

Accessing new repo

Your new repo should now be listed at:

http://repos.fedorapeople.org/repos/

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

http://repos.fedorapeople.org/

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
repoLocalDir=~/repos
declare -a branches=(fedora-13 fedora-14)
declare -a rpmdir=(i386 x86_64 noarch SRPMS)

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

Script for easy repo update

#!/usr/bin/env bash
fasLogin=bioinfornatics
repoLocalDir=~/repos
repoName=D
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[@]}"
do
    echo -e "\033[31mUpdate $dir2 repos:\033[0m"
    cd $dir2
    for dir3 in "${rpmdir[@]}"
    do
        echo -e "\033[34m\t* $dir3:\033[0m"
        cd $dir3
        createrepo ./
        rsync "${rsyncParam[@]}" ./* $fasLogin@fedorapeople.org:/srv/repos/$fasLogin/$repoName/$dir2/$dir3
        cd ..
    done
    cd ..
done
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|"