use $(LIBENSCVECTOR) instead of libensc_vector.a
[util-vserver.git] / util-vserver / scripts / vpkg
index 7343171..c20ec3e 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,23 +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
-    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);;
@@ -81,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 2
+pkgmgmt.isInternal "$vserver"       || is_external=1
 
 cmd=()
 
@@ -106,14 +84,14 @@ case "$style" in
            ## 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
@@ -123,7 +101,7 @@ case "$style" in
            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
@@ -138,7 +116,25 @@ case "$style" in
        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