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...". 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
On Mon, May 05, 2008 at 08:47:54PM +0800, Ruomu Hu wrote:
I often need to install CentOS5 on servers, I do this a lot, so I think I need a respin dist (all updates included).
Nah. Instead, make your kickstart point to both the main repo and the updates repo, and it'll mrge the two and give you a system with the newest packages already installed.
Matthew Miller wrote:
On Mon, May 05, 2008 at 08:47:54PM +0800, Ruomu Hu wrote:
I often need to install CentOS5 on servers, I do this a lot, so I think I need a respin dist (all updates included).
Nah. Instead, make your kickstart point to both the main repo and the updates repo, and it'll mrge the two and give you a system with the newest packages already installed.
I'm with Matthew. If you do it on the road a lot, pack a laptop with the repos you want, dhcpd, tftp (run BIND too) installed and ready to start, a small switch and a few wires.And, maybe, a DVD and boot cd, just in case.
You can reconfigure as needed in %post and on first boot.