From 397f31fcb0b47000c6e5c5c4aaf441970ce06e3a Mon Sep 17 00:00:00 2001 From: rhatto Date: Tue, 19 Sep 2006 16:56:25 +0000 Subject: simplepkg 0.4.9pre2 git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@5 04377dda-e619-0410-9926-eae83683ac58 --- src/mkjail | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100755 src/mkjail (limited to 'src/mkjail') diff --git a/src/mkjail b/src/mkjail new file mode 100755 index 0000000..d0d24a0 --- /dev/null +++ b/src/mkjail @@ -0,0 +1,100 @@ +#!/bin/bash +# +# mkjail v0.4: chroot jail maker +# +# feedback: rhatto at riseup.net | GPL +# +# Mkjail is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or any later version. +# +# Mkjail is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 59 Temple +# Place - Suite 330, Boston, MA 02111-1307, USA +# +# Under the config file, adjust this to where your things live, for example: +# +# JAIL_ROOT="/vservers" # default folder where jails lives +# STORAGE="/var/simplaret" # place where simplaret host its packages +# SIMPLARET_CLEAN="1" # delete downloaded packages before installation +# SIMPLARET_DELETE_DOWN="1" # delete donwloaded packages after installation +# SIMPLARET_DELETE_DURING="1" # delete each package rigth after its installation +# SIMPLARET_UPDATE="0" # simplaret --update before get the packages +# SIMPLARET_PURGE_WEEKS="N" # purge cached packages older than N weeks +# PATCHES_DIR=/var/simplaret/patches" # where your patches lives +# +# todo: - list of packages that could not be installed +# - use swaret just for network mirrors +# - installation order +# - optionally execute chroot-upgrade after installation +# + +COMMON="/usr/libexec/simplepkg/common.sh" + +function usage { + echo "usage: [ROOT=/otherroot] `basename $0` [template]" + exit 1 +} + +if [ -f "$COMMON" ]; then + source $COMMON +else + echo "error: file $COMMON found, check your `basename $0` installation" + exit 1 +fi + +if [ -z "$1" ]; then + usage +else + server="$1" + eval_config `basename $0` -u +fi + +if [[ ! -z "$2" && -f "$BASE_CONF/$2.template" ]]; then + TEMPLATE="$BASE_CONF/$2.template" +elif [[ ! -z "$2" && ! -f "$BASE_CONF/$2.template" ]]; then + echo template $2 not found, using default template + TEMPLATE="$BASE_CONF/default.template" +elif [[ -z "$2" && -f "$BASE_CONF/default.template" ]]; then + TEMPLATE="$BASE_CONF/default.template" + echo using default template +else + echo $0 error: no templates found + echo please create a template using templatepkg + exit 1 +fi + +if [ ! -d "$JAIL_ROOT/$server" ]; then + mkdir -p $JAIL_ROOT/$server +else + if [ ! -z "`ls $JAIL_ROOT/$server | grep -v 'lost+found'`" ]; then + echo error: folder $JAIL_ROOT/$server already exists and seens to be not empty + echo probably the jail $1 already exists + exit 1 + fi +fi + +echo "instaling packages into $JAIL_ROOT/$server using $TEMPLATE..." +install_packages + +TEMPLATE="`echo $TEMPLATE | sed -e 's/\.template$//'`" +echo "copying template files..." +if [ -d "$TEMPLATE.d" ]; then + rsync -av $TEMPLATE.d/ $JAIL_ROOT/$server/ +fi + +echo "executing template scripts..." +if [ -d "$TEMPLATE.s" ]; then + for script in `ls $TEMPLATE.s/`; do + if [ -x "$TEMPLATE.s/$script" ]; then + exec $TEMPLATE.s/$script $JAIL_ROOT $server + fi + done +fi + +echo "$JAIL_ROOT/$server" >> $JAIL_LIST +echo "done creating $server jail" -- cgit v1.2.3