Skip to main content

Fedora repository mirroring script using reposync

I'm back~ :D

As my first post of this holidays .. I give y'all the script i've been using to mirror and sync the fedora repos. The script is using reposync,repomanage (both provided by yum-utils) and createrepo , so you will need to yum for those them first.

#!/bin/bash -x

unset http_proxy
#export http_proxy=

# mirror root - the place you want the rpms to be downloaded

# processor architectures (space separated)
ARCHS="i686 x86_64"

# repository names (space separated)
REPOS="fedora updates"

if [ "$1" != "" ];then

wget -N $1/repodata/comps.xml

# this part will download the comps.xml files .. it still need some improvements though
case "$1" in
echo error

downrepo () {
if [ "$2" == "i686" ];then
cd i386
cd $2
echo "Sychronizing Repositories"
reposync -r $1 -a $2 --newest-only -t /var/tmp/reposync-cache
if [ "$STAT" == "0" ];then
cd $1
echo "Cleaning old packages"
repomanage --withbroken --old . |grep -v 'kernel\-' |grep -v -i 'nvidia'|grep -v -i 'fglrx'|xargs rm -rf
rm -rf .repodata .olddata
echo "Recreating repodata"
getcomps $1
# rm -f comps.xml
if [ -e comps.xml ];then
createrepo --groupfile comps.xml .
createrepo .

#yum clean all --noplugins
while [ "1" == "1" ];do
for REPO in $REPOS;do
# yum makecache --disablerepo=* --enablerepo=$REPO
for ARCH in $ARCHS;do
echo downloading $REPO $ARCH
downrepo $REPO $ARCH
echo Update done, halting for 2 hours
sleep 7200
1 comment

Popular posts from this blog

Adding simple popup to Plone frontpage

Here is a little guide for those who want to add a simple popup to the Plone frontpage for some purpose (eg: announcements, advertisements, etc).

Create a basic html file containing the content you want to appear in the popup. Upload it into $PLONE_SITE/portal_skins/custom (as Page Template) and for the sake of this example, name it popup.html

Afterward, create a Javascript file with your Pop-Up loader script. For example , this script:

function popup(mylink, windowname)
if (! window.focus)return true;
var href;
if (typeof(mylink) == 'string')
href=mylink.href;, windowname, 'width=220,height=400,scrollbars=no');
return false;

popup('popup.html', 'My Popup');

Also upload this file into $PLONE_SITE/portal_skins/custom (as Page Template too). For this example, name it as popup.js

Afterward, in $PLONE_SITE/portal_javascripts , add popup.js as a new script into portal_javascripts…

Tee'ing Python subprocess.Popen output

A little hack for python coders out there who wanted to have a functionality similar to the unix's tee command for redirecting output to multiple places.

import sys
from subprocess import Popen,PIPE
p = Popen(['put','command','and','arguments','here'],stdout=PIPE)

while True:
o = p.stdout.readline()
if o == '' and p.poll() != None: break
# the 'o' variable stores a line from the command's stdout
# do anything u wish with the 'o' variable here
# this loop will break once theres a blank output
# from stdout and the subprocess have ended

HOWTO: Mirroring Yum repositories using Yum-Utils

As promised before in one of my previous post, a Howto on how to mirror and manage yum repositories using some of the utilities in yum-utils.

The first step is, well, of course, is to get yum-utils from fedora repository
yum install yum-utils

Reposync is a utility for mirroring and synchronizing local copy of a yum/rpmmetadata repository.

This utility is very useful if you wanted to make a yum repository mirror. Before this, I used "wget -R -np -N" but this method is a little bit tedious and it doesnt work with repos that didn't use directory listing. Plus, it also download together additional site stuff that I don't need/want and it doesn't verify checksum of the downloaded packages.

Mirroring a repo using this utility is easy, just execute this command
reposync -r <repoid> -a <arch> -n
and the repo will be mirrored in a folder with the same name of the repoid in the directory you executed the command. Eg: you executed the command in /mnt/storage/mi…