minor optimizations
[util-vserver.git] / util-vserver / scripts / vpkg
index 5eecaba..7eddabb 100755 (executable)
@@ -1,4 +1,5 @@
 #!/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()
 {
@@ -35,7 +37,7 @@ Report bugs to <$PACKAGE_BUGREPORT>."
 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
@@ -44,21 +46,6 @@ the GNU General Public License.  This program has absolutely no warranty."
     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
-    else
-       echo $"Can not determine packagemanagement style" >&2
-    fi
-}
 
 case "$1" in
     (--help)   showHelp $(basename $0);;
@@ -79,20 +66,13 @@ case "$tag" in
     *)         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 1
+pkgmgmt.isInternal "$vserver"       || is_external=1
 
 cmd=()
 
@@ -135,6 +115,27 @@ case "$style" in
            fi
        fi
        ;;
+    (debian)
+       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 "$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 1
+       ;;
 esac
 
 export LANG=C