From 0191e01c580da7b52886b460fb2fc4981d08ba45 Mon Sep 17 00:00:00 2001 From: erdgeist Date: Wed, 16 Jul 2008 04:25:35 +0000 Subject: Finally modernize behaviour of ezjail-admin update. It no longer rebuilds the whole world by default. Also add a -u option that utilies freebsd-update to update the world. --- ezjail-admin | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/ezjail-admin b/ezjail-admin index 343cd58..7224d5c 100755 --- a/ezjail-admin +++ b/ezjail-admin @@ -41,7 +41,7 @@ ezjail_usage_ezjailadmin="${ezjail_admin} v3.0b\nUsage: ${ezjail_admin} [archive ezjail_usage_install="Usage: ${ezjail_admin} install [-mMpPsS] [-h host] [-r release]" ezjail_usage_create="Usage: ${ezjail_admin} create [-xbi] [-f flavour] [-r jailroot] [-s size] [-c bde|eli] [-C args] [-a archive] jailname jailip" ezjail_usage_delete="Usage: ${ezjail_admin} delete [-w] jailname" -ezjail_usage_update="Usage: ${ezjail_admin} update [-s sourcetree] [-i] [-pP]" +ezjail_usage_update="Usage: ${ezjail_admin} update [-s sourcetree] [-p] (-b|-i|-u|-P)" ezjail_usage_config="Usage: ${ezjail_admin} config [-r run|norun] [-n newname] [-i attach|detach|fsck] jailname" ezjail_usage_console="Usage: ${ezjail_admin} console [-f] [-e command] jailname" ezjail_usage_archive="Usage: ${ezjail_admin} archive [-Af] [-a archive] [-d archivedir] jailname [jailname...]" @@ -657,23 +657,33 @@ list) ######################## ezjail-admin UPDATE ######################## setup|update) # Clean variables, prevent polution - unset ezjail_provideports - ezjail_installaction="world" + unset ezjail_provideports ezjail_installaction - shift; while getopts :ipPs: arg; do case ${arg} in + shift; while getopts :biupPs: arg; do case ${arg} in + b) ezjail_installaction="buildworld installword";; i) ezjail_installaction="installworld";; + u) ezjail_installaction="freebsd-update";; s) ezjail_sourcetree=${OPTARG};; - p) ezjail_provideports="YES";; P) ezjail_provideports="YES"; ezjail_installaction="none";; + p) ezjail_provideports="YES";; ?) exerr ${ezjail_usage_update};; esac; done; shift $(( ${OPTIND} - 1 )) [ $# -eq 0 ] || exerr ${ezjail_usage_update} + # Check if some action was requested + [ "${ezjail_installaction}" ] || exerr "Error: No install action has been chosen.\n Please note that ezjails behaviour changed. Rebuilding the world no longer is default.\n Run '${ezjail_admin} update -b' to build and install a world from source or '${ezjail_admin} update -i' to install an already built world." + if [ "${ezjail_installaction}" = "none" ]; then # check, whether ezjail has been setup correctly. existence of # ezjail_jailbase is our indicator [ -d "${ezjail_jailbase}" ] || exerr "Error: base jail does not exist.\n You cannot fill base jails ports tree before creating it.\n Please run '${ezjail_admin} update' or '${ezjail_admin} install' first." + elif [ "${ezjail_installaction}" = "freebsd-update" ]; then + [ -d "${ezjail_jailbase}" ] || exerr "Error: base jail does not exist.\n You cannot update a base jail until it is created.\n Please run '${ezjail_admin} update' or '${ezjail_admin} install' first." + + # If ran from cron be kind to freebsds update servers and sleep first + [ -z "$TERM" -o "$TERM" = "dumb" ] && sleep $(( ${RANDOM} % 3600 )) + freebsd-update -b ${ezjail_jailbase} fetch install else # Bump the user for some of the most common errors [ -d "${ezjail_sourcetree}" ] || exerr "Error: Cannot find your copy of the FreeBSD source tree in ${ezjail_sourcetree}.\n Consider using '${ezjail_admin} install' to create the base jail from an ftp server." -- cgit v1.2.3