#!/bin/bash
+# $Id$
# Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
#
: ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars}
test -e "$UTIL_VSERVER_VARS" || {
- echo "Can not find util-vserver installation; aborting..."
+ echo $"Can not find util-vserver installation (the file '$UTIL_VSERVER_VARS' would be expected); aborting..." >&2
exit 1
}
. "$UTIL_VSERVER_VARS"
+. "$_LIB_FUNCTIONS"
function showHelp()
{
function showVersion()
{
echo $"\
-pkgmgmt-info $PACKAGE_VERSION -- shows information about packages in vservers
+vpkg $PACKAGE_VERSION -- shows information about packages in vservers
This program is part of $PACKAGE_STRING
Copyright (C) 2004 Enrico Scholz
exit 0
}
-function guessStyle()
-{
- local vdir=$($_VSERVER_INFO "$1" VDIR) || {
- echo $"Can not determine vserver-root" >&2
- exit 1
- }
-
- if test -e "$vdir"/etc/redhat-release -o -e "$vdir"/etc/fedora-release; then
- style=redhat
- elif test -e "$vdir"/etc/mandrake-release; then
- style=mandrake
- elif test -e "$vdir"/etc/debian_version; then
- style=debian
- else
- echo $"Can not determine packagemanagement style" >&2
- fi
-}
case "$1" in
(--help) showHelp $(basename $0);;
*) echo $"Unsupport tag '$tag'" >&2; exit 1;;
esac
-cfgdir=$($_VSERVER_INFO "$vserver" APPDIR pkgmgmt) || {
- echo $"Package management not configured for vserver '$vserver'" >&2
- exit 1
-}
-
+cfgdir=$($_VSERVER_INFO "$vserver" APPDIR pkgmgmt) || :
vdir=$($_VSERVER_INFO "$1" VDIR) || :
style=
is_external=
-{ read style <"$cfgdir"/style; } 2>/dev/null
-test "$style" || guessStyle "$vserver"
-
-test -e "$cfgdir"/internal || is_external=1
-
+pkgmgmt.guessStyle "$vserver" style || exit 2
+pkgmgmt.isInternal "$vserver" || is_external=1
cmd=()
## rpm outputs sometimes '(contains no files)', so return
## only the valid output
(get-conffiles)
- rpm_param=( -qac --pipe "sed '\!^/!p;d'" );;
+ rpm_param=( -qac --pipe "$_SED '\!^/!p;d'" );;
(install)
rpm_param=( -Uvh "$@" )
apt_param=( install "$@" )
;;
esac
- if test "$is_external"; then
+ if test -n "$is_external"; then
have_apt=1
test -d "$cfgdir"/base/apt -o -d "$cfgdir"/aptetc || have_apt=
else
done
fi
- if test "$is_external"; then
+ if test -n "$is_external"; then
if test "$have_apt" -a "$apt_param"; then
cmd=( "$_VAPT_GET" "$vserver" -- "${apt_param[@]}" )
else
fi
;;
(debian)
- exit 1
+ case "$tag" in
+ (get-conffiles)
+ cmd=( sh -c "cat /var/lib/dpkg/info/*.conffiles 2>/dev/null" )
+ ;;
+ (install)
+ cmd=( apt-get install "$@" )
+ ;;
+ esac
+
+ if test -n "$is_external"; then
+ echo $"'external' packagemanagement is not supported for Debian" >&2
+ exit 1
+ else
+ cmd=( "$_VSERVER" --silent "$vserver" exec "${cmd[@]}" )
+ fi
+ ;;
+ (*)
+ echo $"Packagemanagement is not supported for '$style' style" >&2
+ exit 2
;;
esac