tazpkg rev 466
Add command 'up' - The new and fast way to upgrade SliTaz :-)
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Fri Apr 08 15:06:30 2011 +0200 (2011-04-08) |
parents | 136503e50bf2 |
children | 2feb73f39449 |
files | tazpkg |
line diff
1.1 --- a/tazpkg Fri Apr 08 14:50:13 2011 +0200 1.2 +++ b/tazpkg Fri Apr 08 15:06:30 2011 +0200 1.3 @@ -60,6 +60,7 @@ 1.4 INSTALLED=$LOCALSTATE/installed 1.5 MIRROR=$LOCALSTATE/mirror 1.6 BLOCKED=$LOCALSTATE/blocked-packages.list 1.7 +UP_LIST=$LOCALSTATE/packages.up 1.8 DEFAULT_MIRROR="http://mirror.slitaz.org/packages/`cat /etc/slitaz-release`/" 1.9 1.10 # Check if the directories and files used by Tazpkg 1.11 @@ -2346,6 +2347,87 @@ 1.12 echo "" 1.13 fi 1.14 done ;; 1.15 + up) 1.16 + # 1.17 + # This is tne new way to upgrade packages making 'upgrade' and 1.18 + # upgradeable out-of-date. This new way is much, much more faster! 1.19 + # Look into installed packages and get data from receipt it's fast 1.20 + # and esay to handle vars after use only md5sum to compare packages 1.21 + # 1.22 + # Options avalaible for the command: up 1.23 + for opt in $@ 1.24 + do 1.25 + case "$opt" in 1.26 + --recharge|-r) 1.27 + tazpkg recharge ;; 1.28 + --install|-i) 1.29 + install="y" ;; 1.30 + --check|-c) 1.31 + install="n" ;; 1.32 + esac 1.33 + done 1.34 + mtime=`find /var/lib/tazpkg/packages.list -mtime +7` 1.35 + if [ "$mtime" ]; then 1.36 + gettext "Your packages list is older than one week... recharging" 1.37 + tazpkg recharge 1.38 + fi 1.39 + echo -en "\n\033[1m" 1.40 + gettext "Package" 1.41 + echo -en "\033[26G " && gettext "Update type" 1.42 + echo -e "\033[0m" 1.43 + separator 1.44 + cd $LOCALSTATE/installed 1.45 + echo "" > $UP_LIST 1.46 + for pkg in * 1.47 + do 1.48 + VERSION="" 1.49 + EXTRAVERSION="" 1.50 + . $pkg/receipt 1.51 + md5=`fgrep " $PACKAGE-${VERSION}$EXTRAVERSION.tazpkg" \ 1.52 + ../installed.md5 | awk '{print $1}'` 1.53 + if ! fgrep -q "$md5 $PACKAGE-" ../packages.md5; then 1.54 + # Skip when not found on mirror (local package) 1.55 + grep -q ^$PACKAGE- ../packages.list || continue 1.56 + new=`fgrep "$PACKAGE |" ../packages.desc | awk '{print $3}'` 1.57 + if [ "$VERSION" == "$new" ]; then 1.58 + echo -n "$PACKAGE" 1.59 + echo -e "\033[26G `gettext \"New build :\"` $md5" 1.60 + else 1.61 + echo -n "$PACKAGE" 1.62 + echo -e "\033[26G `gettext \"New version :\"` $new" 1.63 + fi 1.64 + echo "$PACKAGE" >> $UP_LIST 1.65 + fi 1.66 + done 1.67 + sed -i /^$/d $UP_LIST 1.68 + upnb=`cat $UP_LIST | wc -l` 1.69 + pkgs=`ls | wc -l` 1.70 + [ "$upnb" = 0 ] && install="n" && gettext -e "System is up-to-date...\n" 1.71 + separator 1.72 + echo -en "\033[1m" 1.73 + eval_gettext "You have \$upnb avalaible uppgrade on \$pkgs installed packages" 1.74 + echo -e "\033[0m\n" 1.75 + # Pkgs to upgrade ? Skip, let install them all or ask user 1.76 + [ "$install" == "n" ] && exit 0 1.77 + if [ "$upnb" = 0 ]; then 1.78 + if [ "$install" == "y" ]; then 1.79 + continue 1.80 + else 1.81 + gettext "Do you wish to install them now: y=yes n=no ? " 1.82 + read install 1.83 + fi 1.84 + case "$install" in 1.85 + y|Y|yes|YES|Yes) 1.86 + for pkg in `cat $UP_LIST` 1.87 + do 1.88 + echo 'y' | tazpkg get-install $pkg --forced 1.89 + done ;; 1.90 + *) 1.91 + gettext -e "Leaving without any upgrade installed.\n\n" 1.92 + exit 0 ;; 1.93 + esac 1.94 + fi 1.95 + echo "" ;; 1.96 upgradeable) 1.97 # Build upgradeable-packages.list quickly. 1.98 #