X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fscripts%2Fvserver-build.debootstrap;h=af0cc93cba49e4ffbfe9ead33c9d29194a3e4401;hb=dfa40e043f50b3ed0f89cdec01d0655c94c1e12e;hp=e4776438601c21d8647408f58dcb89581cdbdbae;hpb=bf689e984ee7b2a5e25f6f75d7d5a9d72dbaeb9d;p=util-vserver.git diff --git a/util-vserver/scripts/vserver-build.debootstrap b/util-vserver/scripts/vserver-build.debootstrap index e477643..af0cc93 100644 --- a/util-vserver/scripts/vserver-build.debootstrap +++ b/util-vserver/scripts/vserver-build.debootstrap @@ -17,7 +17,7 @@ function cleanUp { - test ! -d "$workdir" || rm -rf "$workdir" + test ! -d "$workdir" || $_RM -rf "$workdir" } function init @@ -29,11 +29,11 @@ function init function initVariables { - base.initVariables + base.init - test "${mirror-unset}" || { + test -n "${mirror-unset}" || { local aux - findFile aux "$CONFDIR"/.defaults/apps/debootstrap/mirror '' + findFile aux "$__CONFDIR"/.defaults/apps/debootstrap/mirror '' test -z "$aux" || read mirror <"$aux" } } @@ -50,15 +50,39 @@ function findDebootstrap { pushd . &>/dev/null DEBOOTSTRAP=$(which debootstrap 2>/dev/null) || { - dir=$(mktemp -d /var/tmp/debootstrap.XXXXXX) + dir=$($_MKTEMPDIR /var/tmp/debootstrap.XXXXXX) workdir=$dir dst=$dir/debootstrap.deb - findFile DEBOOTSTRAP_URI "$CONFDIR"/.defaults/apps/debootstrap/uri "$PKGLIBDEFAULTDIR"/debootstrap.uri + findFile DEBOOTSTRAP_URI "$__CONFDIR"/.defaults/apps/debootstrap/uri "$__PKGLIBDEFAULTDIR"/debootstrap.uri read tmp <$DEBOOTSTRAP_URI case "$tmp" in (/*) ln -s "$tmp" "$dst";; - (http://*|ftp://*) $_WGET -nv -O "$dst" "$tmp";; + (http://*|ftp://*) + echo $"\ +Could not find local version of 'debootstrap'; downloading it from +${tmp}..." + $_WGET -nv -O "$dst" "$tmp" || { + $_CAT <&2 +ERROR: Could not download the debootstrap package from + + $tmp + +Usually, this means that Debian released a new version which is unknown +to util-vserver and removed the known ones. To fix this, go to + + http://ftp.debian.org/debian/pool/main/d/debootstrap/ + +(or a nearby mirror) and search the URL for the most recent *.deb +package matching your platform. Then, put this URL into + + $__CONFDIR/.defaults/apps/debootstrap/uri + +and retry the vserver-build command again. +EOF + exit 1 + } + ;; (*) echo $"Unsupported URI scheme '$tmp'" >&2 exit 1;; esac @@ -67,12 +91,30 @@ function findDebootstrap tar xzf data.tar.gz export DEBOOTSTRAP_DIR=`pwd`/usr/lib/debootstrap DEBOOTSTRAP=`pwd`/usr/sbin/debootstrap + + local arch + arch=$(uname -i 2>/dev/null) || \ + arch=$(arch 2>/dev/null) || + arch= + + ## Wash the calculated architecture + case $arch in + (i?86|athlon) arch=i386;; + esac + + test -z "$arch" || echo "$arch" >$DEBOOTSTRAP_DIR/arch } popd &>/dev/null test -x "$DEBOOTSTRAP" || { echo $"Can not find debootstrap at '$DEBOOTSTRAP'" >&2; exit 1; } } +function fixupDebian +{ + $_RM -rf "$1"/dev + $_MV "$1"/dev.X "$1"/dev +} + ### main starts here <--- @@ -84,18 +126,18 @@ init while true; do case "$1" in - -d) DISTRIBUTION=$2; shift;; - -m) mirror=$2; shift;; - --debug) set -x;; - --) shift; break ;; - *) echo "vserver-build.skeleton: internal error: unrecognized option '$1'" >&2 + (-d) DISTRIBUTION=$2; shift;; + (-m) mirror=$2; shift;; + (--debug) set -x;; + (--) shift; break ;; + (*) echo "vserver-build.debootstrap: internal error: unrecognized option '$1'" >&2 exit 1 ;; esac shift done -getDistribution +getDistribution '' 1 initVariables initFilesystem "$OPTION_FORCE" @@ -107,7 +149,8 @@ findDebootstrap test -z "$BUILD_INITPRE" || "$BUILD_INITPRE" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS" mv "$VDIR"/dev "$VDIR"/dev.X -"$DEBOOTSTRAP" "$DISTRIBUTION" "$VDIR" "$mirror" -rm -rf "$VDIR"/dev -mv "$VDIR"/dev.X "$VDIR"/dev +"$DEBOOTSTRAP" "$@" "$DISTRIBUTION" "$VDIR" "$mirror" || : ## HACK: ignore all errors... +fixupDebian "$VDIR" test -z "$BUILD_INITPOST" || "$BUILD_INITPOST" "$SETUP_CONFDIR" "$UTIL_VSERVER_VARS" + +base.setSuccess