#! /bin/bash # $Id: vserver-build,v 1.20 2005/07/03 17:45:43 ensc Exp $ # Copyright (C) 2003,2004,2005 Enrico Scholz # # This program 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; version 2 of the License. # # This program 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. : ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars} test -e "$UTIL_VSERVER_VARS" || { echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2 exit 1 } . "$UTIL_VSERVER_VARS" . "$_LIB_FUNCTIONS" . "$_LIB_VSERVER_SETUP_FUNCTIONS" . "$_LIB_VSERVER_BUILD_FUNCTIONS" ### Some local functions function showHelp() { echo \ $"Usage: $(basename $0) -m -n --force * --rootdir --pkgbase [--] * Options: --force ... remove/rename already existing vservers with the same name --keep ... do not delete generated files and directories when build of vserver failed. -m ... use method ; see below for possible values --rootdir ... [default: $__DEFAULT_VSERVERDIR] --pkgbase ... [default: $__DEFAULT_VSERVERPKGDIR] cfg-options are: $SETUP_HELPMSG Possible methods are: legacy ... the \"old\" copy-all-from-host method, which requires the old legacy vserver-legacy script; with this method the cfg-options will be ignored copy ... the copy-all-from-host method which uses the recent configuration scheme apt-rpm ... -- -d ... installs the base-packages of the given distribution with help of 'vapt-get' yum ... -- -d ... installs the base-packages of the given distribution with help of 'vyum' rpm ... -- [-d ] --empty|([--force] [--nodeps] )+ ... installs lists of rpm-packages skeleton ... -- [ *] ... installs a minimal skeleton filesystem, creates the configuration file and calls an optional command then debootstrap ... -- -d [-m ] [-- *] bootstraps the vserver with Debian's 'debootstrap' package Please report bugs to $PACKAGE_BUGREPORT" exit 0 } function showVersion() { echo \ $"vserver-build $PACKAGE_VERSION -- initializes a vserver This program is part of $PACKAGE_STRING Copyright (C) 2003,2004,2005 Enrico Scholz This program is free software; you may redistribute it under the terms of the GNU General Public License. This program has absolutely no warranty." exit 0 } ### main starts here set -e declare -a default_opts=() test -n "$NO_DEFAULT_OPTS" || getFileArray default_opts "$__CONFDIR/.defaults/apps/build/options" || : tmp=$(getopt -o +m:n: --long keep,force,debug,help,version,rootdir:,pkgbase:,$SETUP_OPTIONS -n "$(basename $0)" -- \ "${default_opts[@]}" "$@") || exit 1 eval set -- "$tmp" VSERVER_NAME= OPTION_FORCE= OPTION_DEBUG=0 OPTION_KEEP= while true; do case "$1" in (--help) showHelp $0 ;; (--version) showVersion ;; (--force) OPTION_FORCE=1;; (--keep) OPTION_KEEP=1;; (--debug) let ++OPTION_DEBUG; set -x;; (--rootdir) ROOTDIR=$2; shift;; (--pkgbase) PKGCFGBASE=$2; shift;; (-m) method=$2; shift;; (-n) VSERVER_NAME=$2; shift;; (--) shift; break;; (*) { setup_setOption2 "$1" "$2" && shift; } || \ panic $"vserver-build: internal error." ;; esac shift done test -n "$VSERVER_NAME" || panic $"Name of vserver not specified" setup_setDefaults "$VSERVER_NAME" case x"$method" in (xlegacy) exec $_VSERVER_LEGACY "$VSERVER_NAME" build "$@" ;; (xapt-rpm|xcopy|xskeleton|xdebootstrap|xyum|xrpm) . $__PKGLIBDIR/vserver-build.$method ;; (x) panic $"No build-method specified";; (*) panic $"Unknown build-method '$method'";; esac