123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #!/bin/bash
- # Set the textdomain for the translations using $"..."
- TEXTDOMAIN="apt"
- # Get the configuration from /etc/apt/apt.conf
- CLEAN="prompt"
- OPTS=""
- DSELECT_UPGRADE_OPTS="-f"
- APTGET="/usr/bin/apt-get"
- DPKG="/usr/bin/dpkg"
- DPKG_OPTS="--admindir=$1"
- APT_OPT0="-oDir::State::status=$1/status"
- APT_OPT1="-oDPkg::Options::=$DPKG_OPTS"
- set -e
- RES=$(apt-config shell CLEAN DSelect::Clean OPTS DSelect::Options \
- DPKG Dir::Bin::dpkg/f APTGET Dir::Bin::apt-get/f \
- ARCHIVES Dir::Cache::Archives/d \
- WAIT DSelect::WaitAfterDownload/b \
- CHECKDIR DSelect::CheckDir/b)
- 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
- }
- if [ "$WAIT" = "true" ]; then
- $APTGET $DSELECT_UPGRADE_OPTS $OPTS "$APT_OPT0" "$APT_OPT1" -d dselect-upgrade
- echo $"Press [Enter] to continue." && read RES
- $APTGET $DSELECT_UPGRADE_OPTS $OPTS "$APT_OPT0" "$APT_OPT1" dselect-upgrade
- RES=$?
- else
- $APTGET $DSELECT_UPGRADE_OPTS $OPTS "$APT_OPT0" "$APT_OPT1" 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 | grep -E -v "^lock$|^partial$" | wc -l) \
- -eq 0 ]; then
- exit 0
- fi
- NEWLS=$(ls -ld $ARCHIVES)
- if [ "$CHECKDIR" = "true" ]; then
- if [ "$OLDLS" = "$NEWLS" ]; then
- exit 0
- fi
- fi
-
- # Check the cleaning mode
- case $(echo $CLEAN | tr '[:upper:]' '[:lower:]') in
- auto)
- $APTGET "$APT_OPT0" "$APT_OPT1" autoclean &&
- echo $"Press [Enter] to continue." && read RES && exit 0;
- ;;
- always)
- $APTGET "$APT_OPT0" "$APT_OPT1" clean &&
- echo $"Press [Enter] to continue." && read RES && exit 0;
- ;;
- prompt)
- exec 3>&1
- echo -n $"Do you want to erase any previously downloaded .deb files?"
- if [ $(yesno "" y) = y ]; then
- $APTGET "$APT_OPT0" "$APT_OPT1" clean &&
- echo $"Press [Enter] to continue." && read RES && exit 0;
- fi
- ;;
- *)
- ;;
- esac
- else
- echo $"Some errors occurred while unpacking. Packages that were installed"
- echo $"will be configured. 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 "$DPKG_OPTS" --configure -a
- exit 100
- fi
- exit $?
|