: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
test -e "$UTIL_VSERVER_VARS" || {
- echo "Can not find util-vserver installation; aborting..." >&2
+ 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_BUILD_FUNCTIONS_PKGMGMT"
+. "$PKGLIBDIR/vserver.functions"
function showHelp()
{
$_EXEC_CD "$dir" "$(which test)" "$file" || return 0
- local tmp=$(mktemp /tmp/apt.conf.XXXXXX)
- trap "rm -f $tmp" EXIT
+ local tmp=$($_MKTEMP /tmp/apt.conf.XXXXXX)
+ trap "$_RM -f $tmp" EXIT
- $_EXEC_CD "$dir" /bin/cat "$file" | \
- sed -e "s|^\([^$hash].*@autogenerated@\)|$hash$hash\1|" >$tmp
+ $_EXEC_CD "$dir" $_CAT "$file" | \
+ $_SED -e "s|^\([^$hash].*@autogenerated@\)|$hash$hash\1|" >$tmp
- cat $tmp | $_EXEC_CD "$dir" "$(which cmp)" -s - "$file" || \
+ $_CAT $tmp | $_EXEC_CD "$dir" "$(which cmp)" -s - "$file" || \
$_CHROOT_CAT "$1" <$tmp
- rm -f $tmp
+ $_RM -f $tmp
}
function _unhashAuto()
test -e "$1" || return 0
local hash=$2
- local tmp=$(mktemp /tmp/apt.conf.XXXXXX)
- trap "rm -f $tmp" EXIT
+ local tmp=$($_MKTEMP /tmp/apt.conf.XXXXXX)
+ trap "$_RM -f $tmp" EXIT
- sed -e "s|^$hash$hash\(.*@autogenerated@\)|\1|" "$1" >$tmp
- cmp -s "$tmp" "$1" || \
- cat "$tmp" >"$1"
+ $_SED -e "s|^$hash$hash\(.*@autogenerated@\)|\1|" "$1" >$tmp
+ $_CMP -s "$tmp" "$1" || \
+ $_CAT "$tmp" >"$1"
- rm -f $tmp
+ $_RM -f $tmp
+}
+
+function _mountFilesystemsInternal()
+{
+ local fstab="$1"
+ test -e "$fstab" || return 0
+ shift
+
+ pushd "$vdir" >/dev/null
+ "$@" $_SECURE_MOUNT -n -a --chroot --fstab "$fstab"
+ popd >/dev/null
+}
+
+function _mountFilesystems()
+{
+ local cfgdir=$($_VSERVER_INFO "$1" CFGDIR) || {
+ echo "Can not determine configuration directory for '$1'; ..." >&2
+ return 1
+ }
+ test "$_HAVE_CHBIND_OPTIONS" || _generateChbindOptions "$1"
+
+ _mountFilesystemsInternal "$cfgdir"/fstab $_CHBIND "${CHBIND_OPTS[@]}" || return 1
+ _mountFilesystemsInternal "$cfgdir"/fstab.local $_CHBIND "${CHBIND_OPTS[@]}" || return 1
+}
+
+function _umountFilesystems()
+{
+ local cfgdir=$($_VSERVER_INFO "$1" CFGDIR) || {
+ echo "Can not determine configuration directory for '$1'; ..." >&2
+ return 1
+ }
+ local vdir=$cfgdir/vdir
+ local is_ok=1
+ test "$_HAVE_CHBIND_OPTIONS" || _generateChbindOptions "$1"
+
+ pushd "$vdir/" >/dev/null || return 1
+ _umountVserverInternal "$cfgdir"/fstab.local || is_ok=
+ _umountVserverInternal "$cfgdir"/fstab $_CHBIND "${CHBIND_OPTS[@]}" || is_ok=
+ popd >/dev/null || return 1
+
+ test "$is_ok"
}
function processVserver_RH()
cfgdir=$($_VSERVER_INFO "$vserver" APPDIR)/pkgmgmt
## Figure out the environment....
- if test "$is_internalize"; then
- have_apt=1
- test -d "$cfgdir"/base/apt -o -d "$cfgdir"/aptetc || have_apt=
- else
- have_apt=
- for i in /bin /usr/bin /usr/local/bin; do
- test ! -x "$vdir$i"/apt-get || { have_apt=1; break; }
- done
- fi
+ have_apt=1
+ pkgmgmt.isAptAvailable "$cfgdir" "$vdir" "$is_internalize" || have_apt=
local APTETCDIR=
local APTSTATEDIR=
pushd "$vdir" >/dev/null
test ! -L var/lib/rpm || {
- $_EXEC_CD /var/lib /bin/rm rpm &&
- $_EXEC_CD /var/lib /bin/mkdir -m755 rpm &&
- $_EXEC_CD /var/lib /bin/chown rpm:rpm rpm ||
+ $_EXEC_CD /var/lib $_RM rpm &&
+ $_EXEC_CD /var/lib $_MKDIR -m755 rpm &&
+ $_EXEC_CD /var/lib $_CHOWN rpm:rpm rpm ||
:
} </dev/null 2>/dev/null
var/state/{,apt/{,lists/{,partial}}} \
etc/apt etc/rpm; do
test -d "$i" ||
- $_EXEC_CD /$(dirname "$i") /bin/mkdir -m755 $(basename "$i") || :
+ $_EXEC_CD /$(dirname "$i") $_MKDIR -m755 $(basename "$i") || :
done #2>/dev/null
popd >/dev/null
if test "$is_internalize"; then
:
else
- tmpdir=$(mktemp -d /var/tmp/pgmgmt.XXXXXX)
- trap "rm -rf $tmpdir" EXIT
+ tmpdir=$($_MKTEMPDIR /var/tmp/pgmgmt.XXXXXX)
+ trap "$_RM -rf $tmpdir" EXIT
pushd "$vdir" >/dev/null
- $_EXEC_CD /var/lib /bin/mv rpm $tmpdir/
- $_EXEC_CD /var/lib /bin/ln -s "$rpmdb_mntpoint" rpm
- rm -rf $tmpdir
+ $_EXEC_CD /var/lib $_MV rpm $tmpdir/
+ $_EXEC_CD /var/lib $_LN_S "$rpmdb_mntpoint" rpm
+ $_RM -rf $tmpdir
fi
## Finish it...
if test "$is_internalize"; then
- touch "$cfgdir"/internal
+ $_TOUCH "$cfgdir"/internal
else
- rm -f "$cfgdir"/internal
+ $_RM -f "$cfgdir"/internal
fi
}
test -z "$skip" || return 1
local style
+ _mountFilesystems "$vserver" || return 1
pkgmgmt.guessStyle "$vserver" style || return 1
case "$style" in
echo $"Vserver style '$style' is not supported for packagemanagment" >&2
return 1
esac
+
+ _umountFilesystems "$vserver" || return 1
}
tmp=$(getopt -o y --long debug,externalize,internalize,help,version -n "$0" -- "$@") || exit 1