diff options
| -rw-r--r-- | helper/fileutil.inc | 59 |
1 files changed, 50 insertions, 9 deletions
diff --git a/helper/fileutil.inc b/helper/fileutil.inc index 4b9a2b4d..192758ff 100644 --- a/helper/fileutil.inc +++ b/helper/fileutil.inc @@ -71,6 +71,8 @@ list_packet_files() { done } # +# Conveniance function +# # install all dependencies of a module # goes through all package as given in the variable REQUIRED_INSTALLED_PACKAGES install_dependencies() { @@ -84,15 +86,54 @@ install_dependencies() { install_packages() { [ $# -eq 0 ] && perror "Sanity check failed: no argument given to install_package" local PACKAGE_LIST="$@" - if [ "x$PACKET_MANAGER" == "xapt" ]; then - apt-get install -y ${PACKAGE_LIST} || \ - pwarning "install_packages: apt-get failed with '$IRET' for package '$PACKAGE_LIST'" - elif [ "x$PACKET_MANAGER" == "xzypper" ]; then - zypper --no-refresh --non-interactive install ${PACKAGE_LIST} || \ - pwarning "install_packages: zypper failed with '$IRET' for package '$PACKAGE_LIST'" - else - pinfo "No packet manager determined, this should not happen!" - fi + local INSTALLED_PACKAGES="" + + for PKG in ${PACKAGE_LIST}; do + # check if installed + if [ "x$PACKET_MANAGER" == "xapt" ]; then + dpkg -L ${PKG} > /dev/null 2>&1 + elif [ "x$PACKET_MANAGER" == "xzypper" ]; then + rpm -ql ${PKG} > /dev/null 2>&1 + else + perror "No packet manager determined, this should not happen!" + fi + + local LRET=$? + if [ "x$LRET" == "x0" ]; then + # package installed + pdebug "$PKG installed!" + elif [ "x$LRET" == "x1" ]; then + # package not installed + pdebug "$PKG not installed!" + if [ "x$PACKET_MANAGER" == "xapt" ]; then + apt-get install -y ${PKG} + local IRET=$? + if [ "x$IRET" == "x0" ]; then + # $PGK was installed successfully + INSTALLED_PACKAGES+="$PKG " + elif [ "x$IRET" == "x1" ]; then + # PKG was not installed + # TODO error handling + pwarning "install_packages: apt-get failed with '$?' for package '$PKG'" + fi + elif [ "x$PACKET_MANAGER" == "xzypper" ]; then + zypper --no-refresh --non-interactive install ${PKG} + local IRET=$? + if [ "x$IRET" == "x0" ]; then + # $PGK was installed successfully + INSTALLED_PACKAGES+="$PKG " + elif [ "x$IRET" == "x1" ]; then + # PKG was not installed + # TODO error handling + pwarning "install_packages: zypper failed with '$?' for package '$PKG'" + fi + else + perror "No packet manager determined, this should not happen!" + fi + fi + done + [ ! -z "$INSTALLED_PACKAGES" ] && pinfo "Packages installed: ${INSTALLED_PACKAGES}" + } # |
