[CentOS-devel] Wrong directory in CentOS5-respin

Mon May 5 12:47:54 UTC 2008
Ruomu Hu <huruomu at gmail.com>

Hi,

I often need to install CentOS5 on servers, I do this a lot, so I think
I need a respin dist (all updates included).

I wrote a script to generate my CentOS5-respin. My CentOS5 tree is at
/centos/5, it is rsynced with a Taiwan mirror daily. My generated
CentOS5 tree is placed at /centos/5-respin.

The generation of CentOS5-respin by my script runs fine, but the
generated CentOS5-respin tree has a problem: During network installation
using this CentOS5-respin tree, when it gets rpm installation, it always
complains "The file system-config-services-0.9.4-1.el5.noarch.rpm cannot
be opened.". In the text console, the error message is "Failed to get
http://myserver/centos/5-respin/os/x86_64/system-config-services-0.9.4-1.el5.noarch.rpm".
Anaconda should look for rpms in /centos/5-respin/os/x86_64/CentOS, but
it actually looks for rpms in /centos/5-respin/os/x86_64.

Any ideas?
It would be nice if anyone could point me to some useful docs.

Thanks!
Ruomu

P.S. Here's my script:

#!/bin/bash
#
# gen_respin_distro
#
# To use this script, the following rpms need to installed first:
# anaconda
# anaconda-help
# anaconda-runtime
# busybox-anaconda ?
# bogl
# booty
# netpbm
# netpbm-progs
# mkisofs

#TODO
# 1. Should we use pkgorder? If yes, when?
# 2. Do we need to run pkgorder before buildinstall?
# 3. Do we need to run createrepo? Buildinstall seems to calls it.
# 4. Why does it look for rpms in /centos/5-respin/os/x86_64?


# Check tools
rpmmerge=`dirname "$0"`/rpmmerge
if [ ! -x "$rpmmerge" ]; then
echo "$rpmmerge does not exist or is not executable." >&2
exit 1
fi
createrepo="/usr/bin/createrepo"
if [ ! -x "$createrepo" ]; then
echo "$createrepo does not exist or is not executable." >&2
exit 1
fi
buildinstall="/usr/lib/anaconda-runtime/buildinstall"
if [ ! -x "$buildinstall" ]; then
echo "$buildinstall does not exist or is not executable." >&2
exit 1
fi

# Set variables and functions
src="/centos/5"
dest="/centos/5-respin"
distro="CentOS"
arch="x86_64"
version="5"
product="CentOS"
release="Respin"
prodpath="CentOS"
eval_retval()
{
test $? -ne 0 && exit 1
}

# Merge rpms
echo -e "*** Merge rpms ***\n"
$rpmmerge $src/os/$arch/$distro $src/updates/$arch/RPMS
$dest/os/$arch/$distro
eval_retval

# Create repo data
echo -e "\n*** Create repo data ***\n"
#cp -al $src/os/$arch/repodata/comps.xml $dest/os/$arch/$distro
#eval_retval
$createrepo -q -g $src/os/$arch/repodata/comps.xml -c $dest/os/$arch/cache \
-o $dest/os/$arch $dest/os/$arch/$distro
eval_retval
#rm -f $dest/os/$arch/$distro/comps.xml
#eval_retval

# Run buildinstall
export PYTHONPATH="/usr/lib/anaconda"
echo -e "\n*** Buildinstall ***\n"
sudo $buildinstall \
--pkgorder "$dest/os/$arch/pkgorder.txt" \
--version $version \
--product $product \
--release $release \
--prodpath $prodpath \
$dest/os/$arch
eval_retval

exit 0