COMMAND=$(basename $0)
+# lst parsing utilities
+PATH=$(dirname $0):$PATH . build.common
+
function failure () {
echo "$COMMAND : Bailing out"
exit 1
# overwrite vserver's internal yum config from what is in
# .distributions/<distrib>/yum/yum.conf and /yum.repos.d
-# note : on fc6 I've had trouble with yum.conf, I haven't created a custom yum.conf
-# when using the default yum.conf,
-# vserver build -m yum complained that /vservers/<v>/var/log/yum.log could not be created
function configure_yum_in_vserver () {
set -x
cd /etc/vservers/.distributions/${fcdistro}
if [ -f yum/yum.conf ] ; then
echo "Initializing yum.conf in $vserver from $(pwd)/yum"
- cp yum/yum.conf /vservers/$vserver/etc/yum.conf
+ sed -e "s!@YUMETCDIR@!/etc!g;
+ s!@YUMCACHEDIR@!/var/cache/yum!g;
+ s!@YUMLOGDIR@!/var/log!g;
+ s!@YUMLOCKDIR@!/var/lock!g;
+ " yum/yum.conf > /vservers/$vserver/etc/yum.conf
+
+ # post process the various @...@ variables from this yum.conf file.
else
echo "Cannot initialize yum.conf in $vserver - using $fcdistro default"
fi
fcdistro=$1; shift
personality=$1; shift
+ CLONED=0
# create the new vserver
- [ ! -d /etc/vservers/$vserver ] && $personality vserver $VERBOSE $vserver build -m yum -- -d $fcdistro
+ if [ ! -d /etc/vservers/$vserver ] ; then
+ # check if we can create the vserver from a reference vserver
+ #if [ -d /vservers/${fcdistro}_reference ] ; then
+ if [ 0 -ne 0 ] ; then
+ $personality vserver $VERBOSE $vserver build -m clone -- --source /vservers/${fcdistro}_reference
+ CLONED=1
+ else
+ $personality vserver $VERBOSE $vserver build -m yum -- -d $fcdistro
+ fi
+ fi
if [ ! -z "$personality" ] ; then
l32=$(grep $personality /etc/vservers/$vserver/personality | wc -l)
[ $cap -eq 0 ] && echo 'CAP_IPC_LOCK' >> /etc/vservers/$vserver/bcapabilities
# start the vserver so we can do the following operations
- $personality vyum $vserver -- -y install yum
- $personality vserver $VERBOSE $vserver pkgmgmt internalize
+ if [ $CLONED -eq 0 ] ; then
+ $personality vyum $vserver -- -y install yum
+ $personality vserver $VERBOSE $vserver pkgmgmt internalize
+ fi
$personality vserver $VERBOSE $vserver start
$personality vserver $VERBOSE $vserver exec rm -f /var/lib/rpm/__db*
$personality vserver $VERBOSE $vserver exec rpm --rebuilddb
+ # minimal config in the vserver for yum to work
configure_yum_in_vserver $vserver $fcdistro
# set up resolv.conf
cp /etc/resolv.conf /vservers/$vserver/etc/resolv.conf
-
}
function devel_tools () {
personality=$1; shift
# check for .lst file based on pldistro
- lst=${pldistro}-${fcdistro}-devel.lst
+ lst=${pldistro}-devel.lst
if [ -f $lst ] ; then
echo "$COMMAND: Using $lst"
else
fi
# install individual packages, then groups
- packages=$(grep "^package:" $lst | sed -e s,package:,,)
- groups=$(grep "^group:" $lst | sed -e s,group:,,)
+ packages=$(pl_getPackages2 ${fcdistro} $lst)
+ groups=$(pl_getGroups2 ${fcdistro} $lst)
[ -n "$packages" ] && $personality vserver $vserver exec yum -y install $packages
[ -n "$groups" ] && $personality vserver $vserver exec yum -y groupinstall $groups
fi
fi
+ # customize root's prompt
+ cat << PROFILE > /root/.profile
+export PS1="[$vserver] \\w # "
+PROFILE
+
uid=2000
gid=2000