aboutsummaryrefslogtreecommitdiff
path: root/src/mkjail
diff options
context:
space:
mode:
authorrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2006-09-19 16:56:25 +0000
committerrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>2006-09-19 16:56:25 +0000
commit397f31fcb0b47000c6e5c5c4aaf441970ce06e3a (patch)
tree0df0e0bbc0ef9d4f2a388d4bd634e8683e9a36af /src/mkjail
parenta5ad04283516a7ff72cfd33f3221cfd3c10c3b5b (diff)
downloadsimplepkg-397f31fcb0b47000c6e5c5c4aaf441970ce06e3a.tar.gz
simplepkg-397f31fcb0b47000c6e5c5c4aaf441970ce06e3a.tar.bz2
simplepkg 0.4.9pre2
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@5 04377dda-e619-0410-9926-eae83683ac58
Diffstat (limited to 'src/mkjail')
-rwxr-xr-xsrc/mkjail100
1 files changed, 100 insertions, 0 deletions
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` <jail-name> [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"