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  		#