Introducing the -P flag to allow ports updating only
This commit is contained in:
parent
32a96ad615
commit
0c133c53cd
103
ezjail-admin
103
ezjail-admin
@ -18,6 +18,7 @@ ezjail_jailbase=${ezjail_jailbase:-"$ezjail_jaildir/basejail"}
|
|||||||
ezjail_jailfull=${ezjail_jailfull:-"$ezjail_jaildir/fulljail"}
|
ezjail_jailfull=${ezjail_jailfull:-"$ezjail_jaildir/fulljail"}
|
||||||
ezjail_flavours=${ezjail_flavours:-"$ezjail_jaildir/flavours"}
|
ezjail_flavours=${ezjail_flavours:-"$ezjail_jaildir/flavours"}
|
||||||
ezjail_sourcetree=${ezjail_sourcetree:-"/usr/src"}
|
ezjail_sourcetree=${ezjail_sourcetree:-"/usr/src"}
|
||||||
|
ezjail_portscvsroot=${ezjail_portscvsroot:-":pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs"}
|
||||||
|
|
||||||
ezjail_mount_enable=${ezjail_mount_enable:-"YES"}
|
ezjail_mount_enable=${ezjail_mount_enable:-"YES"}
|
||||||
ezjail_devfs_enable=${ezjail_devfs_enable:-"YES"}
|
ezjail_devfs_enable=${ezjail_devfs_enable:-"YES"}
|
||||||
@ -54,11 +55,11 @@ create)
|
|||||||
newjail_name=$1; newjail_ip=$2;
|
newjail_name=$1; newjail_ip=$2;
|
||||||
|
|
||||||
# we need at least a name and an ip for new jail
|
# we need at least a name and an ip for new jail
|
||||||
[ "$newjail_name" -a "$newjail_ip" -a $# = 2 ] || exerr 'Usage: ezjail create [-f flavour] [-r jailroot] [-x] jailname jailip'
|
[ "${newjail_name}" -a "${newjail_ip}" -a $# = 2 ] || exerr 'Usage: ezjail create [-f flavour] [-r jailroot] [-x] jailname jailip'
|
||||||
|
|
||||||
# check, whether ezjail-update has been called. existence of
|
# check, whether ezjail-update has been called. existence of
|
||||||
# ezjail_jailbase is our indicator
|
# ezjail_jailbase is our indicator
|
||||||
[ -d $ezjail_jailbase ] || exerr "Error: base jail does not exist. Please run 'ezjail-admin update' first"
|
[ -d ${ezjail_jailbase} ] || exerr "Error: base jail does not exist. Please run 'ezjail-admin update' first"
|
||||||
|
|
||||||
# relative paths don't make sense in rc.scripts
|
# relative paths don't make sense in rc.scripts
|
||||||
[ ${ezjail_jaildir#/} = ${ezjail_jaildir} ] && exerr "Error: Need an absolute path in ezjail_jaildir, it currently is set to: $ezjail_jaildir"
|
[ ${ezjail_jaildir#/} = ${ezjail_jaildir} ] && exerr "Error: Need an absolute path in ezjail_jaildir, it currently is set to: $ezjail_jaildir"
|
||||||
@ -215,56 +216,92 @@ delete)
|
|||||||
######################## ezjail-admin UPDATE ########################
|
######################## ezjail-admin UPDATE ########################
|
||||||
setup|update)
|
setup|update)
|
||||||
shift
|
shift
|
||||||
args=`getopt is: $*`
|
args=`getopt ipPs: $*`
|
||||||
[ $? = 0 ] || exerr 'Usage: ezjail update [-s sourcetree] [-i]'
|
[ $? = 0 ] || exerr 'Usage: ezjail update [-s sourcetree] [-i] [-pP]'
|
||||||
|
|
||||||
updatejail_installaction="world"
|
updatejail_installaction="world"
|
||||||
|
updatejail_provideports=
|
||||||
|
|
||||||
set -- $args
|
set -- $args
|
||||||
for arg do
|
for arg do
|
||||||
case $arg in
|
case $arg in
|
||||||
-i) updatejail_installaction="installworld"; shift;;
|
-i) updatejail_installaction="installworld"; shift;;
|
||||||
-s) ezjail_sourcetree="$2"; shift 2;;
|
-s) ezjail_sourcetree="$2"; shift 2;;
|
||||||
|
-p) updatejail_provideports="YES"; shift;;
|
||||||
|
-P) updatejail_provideports="YES"; updatejail_installaction="none"; shift;;
|
||||||
--) shift; break;;
|
--) shift; break;;
|
||||||
esac
|
esac
|
||||||
done;
|
done;
|
||||||
|
|
||||||
# Bump the user for some of the most common errors
|
if [ $updatejail_installaction = "none" ]; then
|
||||||
[ -d ${ezjail_sourcetree} ] || exerr "Cannot find your copy of the FreeBSD source tree in $ezjail_sourcetree."
|
# check, whether ezjail-update has been called. existence of
|
||||||
[ -f ${ezjail_sourcetree}/Makefile ] || exerr "Your source tree in $ezjail_sourcetree seems to be incomplete (Makefile missing)."
|
# ezjail_jailbase is our indicator
|
||||||
|
[ -d ${ezjail_jailbase} ] || exerr "Error: base jail does not exist. You cannot fill base jails ports tree before creating it. Please run 'ezjail-admin update' first"
|
||||||
|
else
|
||||||
|
# Bump the user for some of the most common errors
|
||||||
|
[ -d ${ezjail_sourcetree} ] || exerr "Cannot find your copy of the FreeBSD source tree in $ezjail_sourcetree."
|
||||||
|
[ -f ${ezjail_sourcetree}/Makefile ] || exerr "Your source tree in $ezjail_sourcetree seems to be incomplete (Makefile missing)."
|
||||||
|
|
||||||
cd ${ezjail_sourcetree}
|
cd ${ezjail_sourcetree}
|
||||||
# Normally fulljail should be renamed by past ezjail-admin commands
|
# Normally fulljail should be renamed by past ezjail-admin commands
|
||||||
# However those may have failed
|
# However those may have failed
|
||||||
rm -rf ${ezjail_jailfull}; mkdir -p ${ezjail_jailfull}
|
rm -rf ${ezjail_jailfull}; mkdir -p ${ezjail_jailfull}
|
||||||
|
|
||||||
# make our world
|
# make our world
|
||||||
make ${updatejail_installaction} DESTDIR=${ezjail_jailfull}
|
make ${updatejail_installaction} DESTDIR=${ezjail_jailfull}
|
||||||
[ $? = 0 ] || exerr "make ${updatejail_installaction} failed"
|
[ $? = 0 ] || exerr "make ${updatejail_installaction} failed"
|
||||||
|
|
||||||
# setup world
|
# setup world
|
||||||
make distribution DESTDIR=${ezjail_jailfull}
|
make distribution DESTDIR=${ezjail_jailfull}
|
||||||
[ $? = 0 ] || exerr "make distribution failed"
|
[ $? = 0 ] || exerr "make distribution failed"
|
||||||
|
|
||||||
cd ${ezjail_jailfull}
|
cd ${ezjail_jailfull}
|
||||||
# Fill basejail from installed world
|
# Fill basejail from installed world
|
||||||
mkdir -p ${ezjail_jailbase}/usr ${ezjail_jailbase}/config/pkg
|
mkdir -p ${ezjail_jailbase}/usr ${ezjail_jailbase}/config/pkg
|
||||||
for a in bin lib libexec sbin usr/bin usr/include usr/lib usr/libexec usr/sbin usr/src usr/share; do
|
for a in bin lib libexec sbin usr/bin usr/include usr/lib usr/libexec usr/sbin usr/src usr/share; do
|
||||||
find ${a} | cpio -d -p -v ${ezjail_jailbase};
|
find ${a} | cpio -d -p -v ${ezjail_jailbase};
|
||||||
chflags -R noschg ${a}; rm -r ${a}; ln -s /basejail/${a} ${a}
|
chflags -R noschg ${a}; rm -r ${a}; ln -s /basejail/${a} ${a}
|
||||||
done
|
done
|
||||||
mkdir basejail
|
mkdir basejail
|
||||||
ln -s /basejail/usr/ports usr/ports
|
|
||||||
|
if [ -d ${ezjail_jailtemplate} ]; then
|
||||||
|
chflags -R noschg ${ezjail_jailtemplate}_old
|
||||||
|
rm -rf ${ezjail_jailtemplate}_old
|
||||||
|
mv ${ezjail_jailtemplate} ${ezjail_jailtemplate}_old
|
||||||
|
fi
|
||||||
|
mv ${ezjail_jailfull} ${ezjail_jailtemplate}
|
||||||
|
|
||||||
|
# If the default flavour example has not yet been copied, do it now
|
||||||
|
[ -d ${ezjail_flavours}/default ] || cp -p -r ${ezjail_examples}/default ${ezjail_flavours}/
|
||||||
|
|
||||||
|
fi # installaction="none"
|
||||||
|
|
||||||
|
# The user may want to have a ports tree in basejail
|
||||||
|
if [ "$updatejail_provideports" ]; then
|
||||||
|
# if /usr/ports/CVS exists, assume cvs up is safe
|
||||||
|
if [ -f ${ezjail_jailbase}/usr/ports/CVS/Root ]; then
|
||||||
|
echo -n "Updating ports from "; cat ${ezjail_jailbase}/usr/ports/CVS/Root
|
||||||
|
echo "Gathering local information may take a while."
|
||||||
|
cd ${ezjail_jailbase}/usr/ports/; cvs up -APd
|
||||||
|
else
|
||||||
|
echo "Checking out ports from ${ezjail_portscvsroot}"
|
||||||
|
mkdir -p ${ezjail_jailbase}/usr/ports/
|
||||||
|
cd ${ezjail_jailbase}/usr/; cvs -d ${ezjail_portscvsroot} co ports
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ $? = 0 ] || exerr "Updating ports failed."
|
||||||
|
[ -f ${ezjail_jailtmeplate}/usr/ports ] || ln -s /basejail/usr/ports ${ezjail_jailtemplate}/usr/ports
|
||||||
|
|
||||||
if [ -d ${ezjail_jailtemplate} ]; then
|
|
||||||
chflags -R noschg ${ezjail_jailtemplate}_old
|
|
||||||
rm -rf ${ezjail_jailtemplate}_old
|
|
||||||
mv ${ezjail_jailtemplate} ${ezjail_jailtemplate}_old
|
|
||||||
fi
|
fi
|
||||||
mv ${ezjail_jailfull} ${ezjail_jailtemplate}
|
|
||||||
|
|
||||||
# If the default flavour example has not yet been copied, do it now
|
# A ports collection inside jails is hardly useful w/o an appropriate /etc/make.conf
|
||||||
[ -d ${ezjail_flavours}/default ] || cp -p -r ${ezjail_examples}/default ${ezjail_flavours}/
|
# if we find basejail/usr/ports/Makefile, assume that the admin wants a working make.conf in new jails
|
||||||
|
if [ -f ${ezjail_jailbase}/usr/ports/Makefile -a -f ${ezjail_examples}/default/etc/make.conf -a \
|
||||||
|
! -f ${ezjail_jailtemplate}/etc/make.conf ]; then
|
||||||
|
cp -p ${ezjail_examples}/default/etc/make.conf ${ezjail_jailtemplate}/etc/
|
||||||
|
echo Note: a non-standard /etc/make.conf was copied to the template jail
|
||||||
|
echo in order to get the ports collection running inside jails
|
||||||
|
fi
|
||||||
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user