#! /bin/sh #---------------------------------------------------------------------------- # /var/install/bin/deinstall-package - deinstall 'eisfair' packages # # Creation: 2001-12-09 ms # Last Update: $Id$ # # Copyright (c) 2001-2008 Michell Schimanski # the eisfair team, team(at)eisfair(dot)org # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. #---------------------------------------------------------------------------- # include eislib . /var/install/include/eislib # include packagelib . /var/install/include/packagelib # List all packages # TRUE list all packages # FALSE list only packages that can be removed list_all_packages=FALSE #---------------------------------------------------------------------------- # execute cui package list application if curses menu is active #---------------------------------------------------------------------------- if `grep -qE "^MENU=['\"]/var/install/bin/show-menu.cui['\"]" /etc/config.d/setup` then /var/install/bin/list-packages.cui \ -t "Deinstall package" \ --helpfile=/var/install/help/packages \ --onlyremovable \ --helpname=PACKAGELIST exit 0 fi #---------------------------------------------------------------------------- # print_package_info #---------------------------------------------------------------------------- print_package_info () { clrhome mecho -info "Package information" echo techo begin 4 16 60* techo row "" "Package:" "$DP_PACKAGE_NAME" echo techo row "" "Description:" "$DP_PACKAGE_SHORT" echo techo row "" "Version:" "$DP_PACKAGE_VERSION" echo techo row "" "Date:" "$DP_PACKAGE_DATE" echo techo row "" "Author:" "$DP_PACKAGE_AUTHOR" # check package usage, keep result in /tmp/pkglist.$$ if ! /var/install/bin/check-package-usage $DP_PACKAGE_NAME > /tmp/pkglist.$$ then echo techo row "" -warn "Active package references:" echo techo row "" "`cat /tmp/pkglist.$$`" fi rm -f /tmp/pkglist.$$ techo end echo } #============================================================================ # main #============================================================================ packages_path=/var/install/packages if [ $list_all_packages = 'TRUE' ] then DEINSTALL_TITLE="Remove packages" else DEINSTALL_TITLE="Remove packages (only packages that can be removed are listet)" fi DEINSTALL_QUESTION="Select" DEINSTALL_COLS='31* 28 12' DEINSTALL_ROWS=0 export DEINSTALL_TITLE export DEINSTALL_QUESTION export DEINSTALL_COLS export DEINSTALL_ROWS if [ $list_all_packages = 'TRUE' ] then num_packages=`ls -F ${packages_path}/ | grep -vE '/|~$' | wc -l` else num_packages=`ls -F /var/install/deinstall/ | grep -vE '/|~$' | wc -l` fi clrhome mecho -info $DEINSTALL_TITLE echo echo mecho -info "Reading package information. Please wait." # select packages # remove subdirs / # remove backup ~ # delete executable-info * installed_packages="`ls -F ${packages_path}/ | grep -vE '/|~$' | sed 's#*##'`" ### parse all package infos for j in ${installed_packages} do progress_bar $DEINSTALL_ROWS $num_packages [ -f ${packages_path}/$j ] || continue # skip subdirs if [ $list_all_packages != 'TRUE' ] then # list only packages that can be removed package=`basename $j` [ ! -f /var/install/deinstall/$package ] && continue fi parse_infofile $j DP let DEINSTALL_ROWS+=1 eval DEINSTALL_${DEINSTALL_ROWS}_1=\"'$'{DP_PACKAGE_NAME}\" eval DEINSTALL_${DEINSTALL_ROWS}_2=\"'$'{DP_PACKAGE_VERSION}\" eval DEINSTALL_${DEINSTALL_ROWS}_3=\"'$'{DP_PACKAGE_DATE}\" # split version and set svn-date in date token, if given # put svn to version token if `echo "${DP_PACKAGE_VERSION}" | grep -qE "svn|cvs"` then _svn="`echo "${DP_PACKAGE_VERSION}" | sed 's/[-0-9.:]//g'`" eval DEINSTALL_${DEINSTALL_ROWS}_2=\""`echo "${DP_PACKAGE_VERSION}" | sed 's/[cvs|svn].*$//'`${_svn}"\" eval DEINSTALL_${DEINSTALL_ROWS}_3=\""`echo "${DP_PACKAGE_VERSION}" | sed 's/^.*[cvs|svn]//'`"\" fi export DEINSTALL_${DEINSTALL_ROWS}_1 export DEINSTALL_${DEINSTALL_ROWS}_2 export DEINSTALL_${DEINSTALL_ROWS}_3 eval DEINSTALL_${DEINSTALL_ROWS}_MY_PACKAGE=\"'$'{j}\" done a=1 while [ 1 ] do /var/install/bin/choose 'DEINSTALL' ${a} > /tmp/choose.$$ rc=$? a=`cat /tmp/choose.$$` rm -f /tmp/choose.$$ [ $rc = 255 ] && exit 1 [ "${a}" = "0" ] && exit 127 [ "${a}" = "" ] && exit 0 eval file='$DEINSTALL_'${a}'_MY_PACKAGE' parse_infofile $file DP print_package_info echo /var/install/bin/ask "Do you really want to delete it" 'n' > /tmp/ask.$$ rc=$? yesno=`cat /tmp/ask.$$` rm -f /tmp/ask.$$ [ $rc = 255 ] && exit 1 if [ "$yesno" = "yes" ] then echo pfile=`basename $file` /var/install/bin/del-package $pfile eval 'DEINSTALL_'${a}'_ACTIVE'='"no"' export DEINSTALL_${a}_ACTIVE fi anykey done #============================================================================ # end #============================================================================