| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #!/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/ \
- WAIT DSelect::WaitAfterDownload`
- 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
- }
- OLDLS=`ls -ld $ARCHIVES`
- if [ x$WAIT = "xyes" ]; then
- $APTGET $OPTS -d dselect-upgrade
- echo "Press enter to continue." && read RES
- $APTGET $OPTS dselect-upgrade
- RES=$?
- else
- $APTGET $OPTS dselect-upgrade
- RES=$?
- fi
- # 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
- NEWLS=`ls -ld $ARCHIVES`
- if [ "x$OLDLS" == "x$NEWLS" ]; 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 $?
|