home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- # Get the configuration from /etc/apt/apt.conf
- CLEAN="prompt"
- OPTS="-f"
- APTGET="/usr/bin/apt-get"
- DPKG="/usr/bin/dpkg"
- set -e
- RES=`apt-config shell CLEAN DSelect::Clean OPTS DSelect::Options \
- DPKG Dir::Bin::dpkg APTGET Dir::Bin::apt-get \
- ARCHIVES Dir::Cache::Archives/`
- eval $RES
- set +e
-
- # Yes/No Prompter
- yesno() {
- # $1 = prompt
- # $2 = default(y)
- local ans def defp
- if [ "$2" ];then
- case $2 in
- Y|y) defp="(Y/n)" def=y;;
- N|n) defp="(y/N)" def=n;;
- *) echo "Bad default setting!" 1>&2; exit 1;;
- esac
- else
- defp="(y/N)" def=n
- fi
- while :;do
- echo -n "$1$defp" 1>&3
- read ans
- case $ans in
- Y|y|N|n) break;;
- "") ans=$def;break;;
- esac
- echo
- done
- echo $ans | tr YN yn
- }
-
- $APTGET $OPTS dselect-upgrade
- RES=$?
-
- # 1 means the user choose no at the prompt
- if [ $RES -eq 1 ]; then
- exit 0
- fi
-
- # Finished OK
- if [ $RES -eq 0 ]; then
-
- if [ `ls $ARCHIVES $ARCHIVES/partial | egrep -v "^lock$|^partial$" | wc -l` \
- -eq 0 ]; then
- exit 0
- fi
-
- # Check the cleaning mode
- case `echo $CLEAN | tr '[:upper:]' '[:lower:]'` in
- auto)
- $APTGET autoclean && echo "Press enter to continue." && read RES && exit 0;
- ;;
- always)
- $APTGET clean && echo "Press enter to continue." && read RES && exit 0;
- ;;
- prompt)
- exec 3>&1
- if [ `yesno "Do you want to erase the downloaded .deb files " y` = y ]; then
- $APTGET clean && echo "Press enter to continue." && read RES && exit 0;
- fi
- ;;
- *)
- ;;
- esac
- else
- echo "Some errors occurred while unpacking. I'm going to configure the"
- echo "packages that were installed. This may result in duplicate errors"
- echo "or errors caused by missing dependencies. This is OK, only the errors"
- echo "above this message are important. Please fix them and run [I]nstall again"
- echo "Press enter to continue."
- read RES && $DPKG --configure -a
- exit 100
- fi
-
- exit $?
-