#!/bin/bash # This script allows you to take Fedora or other rpm based distributions # and install all rpms within a chroot environment. As such chroot environments # can be nicely used to build rpm packages, I also call them buildroot # environments. # Once this script has finished, you can work within a buildroot environment: # chroot $ROOTDIR su - # To remove a buildroot environment: # umount $ROOTDIR/proc # rm -fr $ROOTDIR # Please make sure you understand the below script, verify it will also work # for your environment before starting it. exit 0 FEDORA=/var/www/html/mirror/fedora RPMS=/home/data/3.0E/RedHat/RPMS RPMS=$FEDORA/1/i386/os/Fedora/RPMS RPMS=$FEDORA/development/i386/Fedora/RPMS ROOTDIR=/home/chroot-3.0E ROOTDIR=/mnt/build/fedora ROOTDIR=/home/chroot-fedora umask 022 PATH=$PATH:/sbin export PATH test -d $ROOTDIR/proc && { echo "Already exists!"; exit 1; } mkdir -p $ROOTDIR/{proc,dev/shm,dev/pts,etc/sysconfig} ROOTDEV=`df -P $ROOTDIR | awk '/^\/dev/ { print $1 }'` case $ROOTDEV in /dev/hd[abcd]?) ;; /dev/sd[a-m]?) ;; /dev/dasd[a-z]?) ;; *) echo "Wrong root device." exit 1 ;; esac test -d "$RPMS" || { echo "No rpms found!"; exit 1; } cp -a /dev/null $ROOTDIR/dev/ mount -t proc proc $ROOTDIR/proc # XXX: maybe add mounting /dev/pts and /dev/shm here too: #mount -t tmpfs none $ROOTDIR/dev/shm #mount -t devpts -o gid=5,mode=620 none $ROOTDIR/dev/pts cat > $ROOTDIR/etc/fstab < $ROOTDIR/etc/mtab test $HOSTTYPE = i386 && { LD_ASSUME_KERNEL=2.2.5 export LD_ASSUME_KERNEL } cd $RPMS || { echo "No rpms found!"; exit 1; } if test $HOSTTYPE = i386 ; then r=`ls *.{$HOSTTYPE,i686,noarch}.rpm` else r=`ls *.{$HOSTTYPE,noarch}.rpm` fi s="" for i in $r ; do case $i in glibc-2*.i386.rpm) ;; openssl-0*.i386.rpm) ;; kernel-smp*) ;; kernel-BOOT*) ;; glibc-debug*) ;; tetex-doc*) ;; rpmdb-*) ;; openoffice*) ;; kde-i18n*) ;; ttfonts-ko*) ;; # broken deps in FC2: #abiword*) ;; anaconda*) ;; emacspeak-*) ;; evolution*) ;; pvm-gui-*) ;; redhat-config-*) ;; #setools-*) ;; #system-config-bind-*) ;; tkinter-*) ;; firstboot-*) ;; python-tools-*) ;; desktop-printing-*) ;; gcc-*ssa-*) ;; #isdn4k-utils-*) ;; xisdnload*) ;; iiimf*) ;; rusers-server*) ;; *xemacs*) ;; #xfsprogs*) ;; nvi-m17n-canna*) ;; kinput2-canna-wnn6*) ;; nss_db*) ;; php-imap*) ;; #isdn4k-utils-vboxgetty-*) ;; #net-snmp-perl-*) ;; #ruby-tcltk-*) ;; #kdeaddons-*) ;; #lvm-*) ;; # default to include: *) s="$s $i" ;; esac done rpm -Uvh --nosignature --root=$ROOTDIR $s 2>&1 | tee $ROOTDIR.LOG cp -a /etc/hosts $ROOTDIR/etc cp -a /etc/sysconfig/network $ROOTDIR/etc/sysconfig /usr/sbin/chroot $ROOTDIR /usr/sbin/authconfig --kickstart \ --nostart --useshadow --enablemd5 cat > $ROOTDIR/etc/sysconfig/i18n < $ROOTDIR/boot/grub/device.map < $ROOTDIR/etc/profile.d/local.sh <