]> git.saurik.com Git - apt.git/blobdiff - dselect/install
Join with aliencode
[apt.git] / dselect / install
index 572e8d1c3738c20a27ba07f02ef7217f1053dbbe..f93414dc42b48e8ed8544f315899188f2dee4347 100755 (executable)
@@ -5,9 +5,15 @@ CLEAN="prompt"
 OPTS="-f"
 APTGET="/usr/bin/apt-get"
 DPKG="/usr/bin/dpkg"
 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 \
 set -e
 RES=`apt-config shell CLEAN DSelect::Clean OPTS DSelect::Options \
-                      DPKG Dir::Bin::dpkg APTGET Dir::Bin::apt-get`
+                      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
 
 eval $RES
 set +e
 
@@ -18,15 +24,15 @@ yesno() {
        local ans def defp
        if [ "$2" ];then
                case $2 in
        local ans def defp
        if [ "$2" ];then
                case $2 in
-                       Y|y)    defp="(Y/n)" def=y;;
-                       N|n)    defp="(y/N)" def=n;;
+                       Y|y)    defp="[Y/n]" def=y;;
+                       N|n)    defp="[y/N]" def=n;;
                        *)      echo "Bad default setting!" 1>&2; exit 1;;
                esac
        else
                        *)      echo "Bad default setting!" 1>&2; exit 1;;
                esac
        else
-               defp="(y/N)" def=n
+               defp="[y/N]" def=n
        fi
        while :;do
        fi
        while :;do
-               echo -n "$1$defp" 1>&3
+               echo -n "$1 $defp " 1>&3
                read ans
                case $ans in
                        Y|y|N|n)        break;;
                read ans
                case $ans in
                        Y|y|N|n)        break;;
@@ -37,8 +43,15 @@ yesno() {
        echo $ans | tr YN yn
 }
 
        echo $ans | tr YN yn
 }
 
-$APTGET $OPTS dselect-upgrade
-RES=$?
+if [ x$WAIT = "xtrue" ]; then
+   $APTGET $OPTS "$APT_OPT0" "$APT_OPT1" -d dselect-upgrade
+   echo "Press enter to continue." && read RES
+   $APTGET $OPTS "$APT_OPT0" "$APT_OPT1" dselect-upgrade
+   RES=$?
+else
+   $APTGET $OPTS "$APT_OPT0" "$APT_OPT1" dselect-upgrade
+   RES=$?
+fi
 
 # 1 means the user choose no at the prompt
 if [ $RES -eq 1 ]; then
 
 # 1 means the user choose no at the prompt
 if [ $RES -eq 1 ]; then
@@ -47,18 +60,34 @@ fi
 
 # Finished OK
 if [ $RES -eq 0 ]; then
 
 # 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$CHECKDIR = "xtrue" ]; then
+      if [ "x$OLDLS" = "x$NEWLS" ]; then
+         exit 0
+      fi
+   fi
+   
    # Check the cleaning mode
    case `echo $CLEAN | tr '[:upper:]' '[:lower:]'` in
      auto)
    # Check the cleaning mode
    case `echo $CLEAN | tr '[:upper:]' '[:lower:]'` in
      auto)
-       $APTGET autoclean && echo "Press enter to continue." && read RES && exit 0;
+       $APTGET "$APT_OPT0" "$APT_OPT1" autoclean &&
+          echo "Press enter to continue." && read RES && exit 0;
        ;;
      always)
        ;;
      always)
-       $APTGET clean && echo "Press enter to continue." && read RES && exit 0;
+       $APTGET "$APT_OPT0" "$APT_OPT1" clean &&
+          echo "Press enter to continue." && read RES && exit 0;
        ;;
      prompt)
        exec 3>&1
        ;;
      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;
+       if [ `yesno "Do you want to erase any previously downloaded .deb files?" y` = y ]; then
+          $APTGET "$APT_OPT0" "$APT_OPT1" clean &&
+           echo "Press enter to continue." && read RES && exit 0;
        fi
        ;;
      *) 
        fi
        ;;
      *) 
@@ -70,7 +99,7 @@ else
    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."
    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
+   read RES && $DPKG "$DPKG_OPTS" --configure -a
    exit 100
 fi
 
    exit 100
 fi