Posts: 688 
	Threads: 49 
	Joined: Jul 2014
	
 Reputation: 
 0
	 
 
	
	
		 (11-20-2014, 10:16 PM)Jerry link Wrote:  Thanks misko, a good quick fix there, What we need long term is a if-else statement that suppresses any errors   Here you go, pall.   
Code: #!/bin/bash 
 
bold=`tput bold` 
normal=`tput sgr0` 
 
echo "${bold}**********************" 
echo "Linux Lite 2.0 Updates" 
echo "**********************${normal}" 
echo "" 
echo "Linux Lite will now search for updates for your computer." 
echo "Once installed, your computer will be up to date." 
echo "Simply follow the onscreen instructions." 
echo "" 
echo "Please enter your password to continue..." 
if [ "$(pidof synaptic)" ]  
then 
    sudo killall -9 synaptic  
else 
    echo"" 
fi 
if [ -z "$(pgrep gdebi-gtk)" ] 
then 
    echo "" 
else 
    killall -9 gdebi-gtk 
fi 
sudo apt-get update && sudo apt-get upgrade 
echo "" 
echo "Updates complete." 
echo "This window will now close." 
sleep 5
  
	 
	
	
	
	
 
 
	
	
	
		
	Posts: 9,009 
	Threads: 567 
	Joined: Feb 2014
	
 Reputation: 
 12
	 
 
	
	
		 (11-20-2014, 10:33 PM)misko_2083 link Wrote:  [quote author=Jerry link=topic=1182.msg7309#msg7309 date=1416521784] 
Thanks misko, a good quick fix there, What we need long term is a if-else statement that suppresses any errors   Here you go, pall.   
Code: #!/bin/bash 
 
bold=`tput bold` 
normal=`tput sgr0` 
 
echo "${bold}**********************" 
echo "Linux Lite 2.0 Updates" 
echo "**********************${normal}" 
echo "" 
echo "Linux Lite will now search for updates for your computer." 
echo "Once installed, your computer will be up to date." 
echo "Simply follow the onscreen instructions." 
echo "" 
echo "Please enter your password to continue..." 
if [ "$(pidof synaptic)" ]  
then 
    sudo killall -9 synaptic  
else 
    echo"" 
fi 
if [ -z "$(pgrep gdebi-gtk)" ] 
then 
    echo "" 
else 
    killall -9 gdebi-gtk 
fi 
sudo apt-get update && sudo apt-get upgrade 
echo "" 
echo "Updates complete." 
echo "This window will now close." 
sleep 5
 [/quote]
 
Beautiful misko! I'll upload the new deb's soon   
	 
	
	
	
	
 
 
	
	
	
		
	Posts: 9,009 
	Threads: 567 
	Joined: Feb 2014
	
 Reputation: 
 12
	 
 
	
	
		New versions uploaded, credits to misko in the updates script. 
 
First post script updated too.
	 
	
	
	
	
 
 
	
	
	
		
	Posts: 688 
	Threads: 49 
	Joined: Jul 2014
	
 Reputation: 
 0
	 
 
	
	
		Made some changes to the script. 
Added: A check to see if any updates are available, if there are none, script pops up a dialog box saying 'No Updates Available'. 
Changes: Script opens a list of available updates. 
Note: The list of packages that have been kept back is not displaying.
 Code: #!/bin/bash 
#----------------------------------------------------------------------------------------- 
# Name: Linux Lite Updates 
# Description: A GUI tool to easily install Updates in Linux Lite. 
# Authors: Misko_2083, Jerry Bezencon 
# Date: Nov 20th, 2014 
# Website: https://www.135978621.xyz 
#----------------------------------------------------------------------------------------- 
 
# Kill off any package managers that may be running 
if [ "$(pidof synaptic)" ]  
then 
    sudo killall -9 synaptic  
else 
    echo "" 
fi 
 
if [ -z "$(pgrep gdebi-gtk)" ] 
then 
    echo "" 
else 
    killall -9 gdebi-gtk 
fi 
 
# Linux Lite default dialog icon 
ic="/usr/share/icons/zenity-llcc.png" 
 
# Get list of available updated packages then populate them to /tmp/updateslist 
zenity --question --title="Linux Lite Updates" --window-icon="/usr/share/icons/zenity-llcc.png" --text="We will now fetch the Updates list.\n\nClick Yes to continue or No to abort." 
   if [ "$?" -eq "0" ];then 
 
x=$( stdbuf -oL /bin/bash \-c '(sudo apt-get update \-y )' 2>&1 | 
stdbuf -oL sed -n -e '/\[*$/ s/^/# /p' -e '/\*$/ s/^/# /p'| 
zenity --progress --title="Updating package information..." --pulsate \ 
--width=600 --auto-close ) 
 
 
# Creates a list in /tmp/updateslist 
LISTNAMES=$(apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "Name: $1 INSTALLED: $2 AVAILABLE: $3\n"}' | tee /tmp/updateslist) 
 
# A check here to see if any updates are available, if there are none, script pops up dialog box saying 'No Updates Available', removes /tmp/updateslist 
if [  -z "$(cat /tmp/updateslist)"  ]; then 
     zenity --info --window-icon="/usr/share/icons/zenity-llcc.png" --title="Linux Lite Updates" \ 
        --text="No Updates Available" 
    rm /tmp/updateslist 
    exit 0 
fi 
 
# Erase existing available info 
sudo dpkg --clear-avail 
 
 
 
else 
       exit 0 
fi 
 
# Get the list from /tmp/updateslist and call the zenity dialog to show update list 
UPDATELIST=(`cat /tmp/updateslist | awk '{print "TRUE\n",$2,"\n",$4,"\n",$6}' `) 
LIST=$(zenity --list --checklist --column="pick" --column="NAME" --column="INSTALLED" --column="AVAILABLE" "${UPDATELIST[@]}" --separator=" " --text="Text goes here." --width=800 --height=700) 
   if [ "$?" -eq "0" ];then 
 
# Main window dialogue. 
 INSTALLER_TITLE="Linux Lite Updates 
----------------------------------------------------------------------------------------------------------- 
 
Please make sure all software installation programs like 
<b>Synaptic Package Manager</b> and <b>Gdebi</b> are closed before proceeding. 
 
When you click on <b>Yes</b>, this window will close and the updates will begin. 
 
----------------------------------------------------------------------------------------------------------- 
Click on <b>Yes</b> to continue or <b>No</b> to cancel the updates process." 
 
# Halt updates script if user selects Cancel 
else 
       exit 0 
fi 
 
# Continue script if no halt 
 INSTALL_ICON="/usr/share/icons/zenity-llcc.png" 
 APPNAME="Linux Lite" 
         
        zenity --question --title="$APPNAME Updates" --window-icon="${INSTALL_ICON}" --text="${INSTALLER_TITLE}" 
 
                if [ "$?" -eq "0" ]; then 
 
x=$( stdbuf -oL /bin/bash \-c '(sudo apt-get install $LIST \-y )' 2>&1 | tee /var/log/llupdates.log | 
stdbuf -oL sed -n -e '/\[*$/ s/^/# /p' -e '/\*$/ s/^/# /p'| 
zenity --progress --title="Updating..." --pulsate \ 
--width=600 --auto-close ) 
 
                                if [ "${PIPESTATUS[0]}" -ne "0" ]; then 
                         
                                        zenity --error \ 
                                        --title="Error" --text="$APPNAME Updates have failed." 
                                        exit 0 
                                fi 
 
                else 
 
                                        exit 0 
                fi 
 
PROCEED=$(zenity --question --title="$APPNAME Updates" --window-icon=/usr/share/icons/zenity-llcc.png --text="Updates have finished installing.\n\nWould you like to view the $APPNAME Updates log?"; echo $?) 
if [ ${PROCEED} -eq 1 ]; then 
   zenity --info --title="$APPNAME Updates" --window-icon="${INSTALL_ICON}" --text="$APPNAME Updates Complete." 
   exit; 
else 
   zenity --text-info --title="Updates Log" --width=700 --height=300 --filename="/var/log/llupdates.log" 
fi 
 
exit 0
  
	 
	
	
	
	
 
 
	
	
	
		
	Posts: 66 
	Threads: 20 
	Joined: Mar 2014
	
 Reputation: 
 0
	 
 
	
	
		I have 1.06 can i run the script or? /ivar
	 
	
	
	
	
 
 
	
	
	
		
	Posts: 9,009 
	Threads: 567 
	Joined: Feb 2014
	
 Reputation: 
 12
	 
 
	
	
		 (11-22-2014, 12:38 AM)iwar link Wrote:  I have 1.06 can i run the script or? /ivar 
You can.
	  
	
	
	
	
 
 
	
	
	
		
	Posts: 9,009 
	Threads: 567 
	Joined: Feb 2014
	
 Reputation: 
 12
	 
 
	
	
		Some nice additions there misko    I think we should remove the checklist though, new folk could interrupt this incorrectly.
	  
	
	
	
	
 
 
	
	
	
		
	Posts: 9,009 
	Threads: 567 
	Joined: Feb 2014
	
 Reputation: 
 12
	 
 
	
	
		If you still want to use the existing Menu, Favorites, Install Updates entry to try the new beta method, here's how. 
1) Open a  terminal do:
 Code: sudo cp ~/updatestest /usr/scripts
 
2) Then go to Menu, Settings, Main Menu. Highlight Install Updates in the right hand pane and click on  Properties. Change the  Command to:
 Code: gksudo /usr/scripts/updatestest
 
Now the new GUI will run from the Menu. To go back to the stock way of doing Updates, simply replace:
 Code: gksudo /usr/scripts/updatestest
 
with
  
	 
	
	
	
	
 
 
	
	
	
		
	Posts: 688 
	Threads: 49 
	Joined: Jul 2014
	
 Reputation: 
 0
	 
 
	
	
		 (11-22-2014, 06:39 AM)Jerry link Wrote:  Some nice additions there misko   I think we should remove the checklist though, new folk could interrupt this incorrectly. OK, checklist is removed   
Some minor improvements to the script. 
First open sinaptic and/or gdebi-gtk to test this.
 Code: #!/bin/bash 
#----------------------------------------------------------------------------------------- 
# Name: Linux Lite Updates 
# Description: A GUI tool to easily install Updates in Linux Lite. 
# Authors: Misko_2083, Jerry Bezencon 
# Date: Nov 20th, 2014 
# Website: https://www.135978621.xyz 
#----------------------------------------------------------------------------------------- 
 
# Kill off any package managers that may be running 
# Timeout in seconds 
if [ "$(pidof synaptic)" ] 
then 
    TIMEOUT=10 
( 
SEC=$TIMEOUT; 
while [[ $SEC -ge 0 ]];  
do 
echo `expr \( \( $TIMEOUT - $SEC \) \* 100 / $TIMEOUT \)`; 
echo "#synaptic will close in $SEC seconds."; 
SEC=`expr $SEC - 1`; 
sleep 1; 
done; 
) | /usr/bin/zenity --progress --auto-close 
                if [ "${PIPESTATUS[1]}" -ne "0" ]; then 
                         
                                        zenity --info \ 
                                        --title="Updates" --text="Close the synaptic package manager and try again." 
                                        exit 0 
                                fi 
    sudo killall -9 synaptic  
else 
    echo "" 
fi 
 
if [ -z "$(pgrep gdebi-gtk)" ] 
then 
    echo "" 
else 
    TIMEOUT=10 
( 
SEC=$TIMEOUT; 
while [[ $SEC -ge 0 ]];  
do 
echo `expr \( \( $TIMEOUT - $SEC \) \* 100 / $TIMEOUT \)`; 
echo "#gdebi package installer will be closed in $SEC seconds."; 
SEC=`expr $SEC - 1`; 
sleep 1; 
done; 
) | /usr/bin/zenity --progress --auto-close 
                if [ "${PIPESTATUS[1]}" -ne "0" ]; then 
                         
                                        zenity --info \ 
                                        --title="Updates" --text="Close the gdebi package installer and try again." 
                                        exit 0 
                                fi 
    killall -9 gdebi-gtk 
fi 
 
# Linux Lite default dialog icon 
ic="/usr/share/icons/zenity-llcc.png" 
 
# Get list of available updated packages then populate them to /tmp/updateslist 
zenity --question --title="Linux Lite Updates" --window-icon="/usr/share/icons/zenity-llcc.png" --text="We will now fetch the Updates list.\n\nClick Yes to continue or No to abort." 
   if [ "$?" -eq "0" ];then 
 
x=$( stdbuf -oL /bin/bash \-c '(sudo apt-get update \-y )' 2>&1 | 
stdbuf -oL sed -n -e '/\[*$/ s/^/# /p' -e '/\*$/ s/^/# /p'| 
zenity --progress --title="Updating package information..." --pulsate \ 
--width=600 --auto-close ) 
 
 
# Creates a list in /tmp/updateslist 
LISTNAMES=$(apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "Name: $1 INSTALLED: $2 AVAILABLE: $3\n"}' |  tee /tmp/updateslist) 
 
 
# A check here to see if any updates are available, if there are none, script pops up dialog box saying 'No Updates Available', removes /tmp/updateslist 
if [  -z "$(cat /tmp/updateslist)"  ]; then 
     zenity --info --window-icon="/usr/share/icons/zenity-llcc.png" --title="Linux Lite Updates" \ 
        --text="No Updates Available" 
    rm /tmp/updateslist 
    exit 0 
fi 
 
#Insert text into  /tmp/updateslist 
sed -i -e '1 i\#########                     List of available Updates                                           ##############' -e '1 i\#########  Click OK to continue or Cancel to stop the update process         ##############' /tmp/updateslist 
 
# Erase existing available info 
sudo dpkg --clear-avail 
 
 
 
  else 
       exit 0 
  fi 
 
# Call the zenity dialog to show update list 
zenity --text-info --title="List of available Updates - Click OK to continue or Cancel to stop the update process" --width=700 --height=300 --filename="/tmp/updateslist " 
   if [ "$?" -eq "0" ];then 
 
# Main window dialogue. 
 INSTALLER_TITLE="Linux Lite Updates 
----------------------------------------------------------------------------------------------------------- 
 
Please make sure all software installation programs like 
<b>Synaptic Package Manager</b> and <b>Gdebi</b> are closed before proceeding. 
 
When you click on <b>Yes</b>, this window will close and the updates will begin. 
 
----------------------------------------------------------------------------------------------------------- 
Click on <b>Yes</b> to continue or <b>No</b> to cancel the updates process." 
 
# Halt updates script if user selects Cancel 
else 
    rm /tmp/updateslist 
       exit 0 
fi 
 
# Continue script if no halt 
 INSTALL_ICON="/usr/share/icons/zenity-llcc.png" 
 APPNAME="Linux Lite" 
         
        zenity --question --title="$APPNAME Updates" --window-icon="${INSTALL_ICON}" --text="${INSTALLER_TITLE}" 
 
                if [ "$?" -eq "0" ]; then 
 
x=$( stdbuf -oL /bin/bash \-c '(sudo apt-get upgrade \-y )' 2>&1 | tee /var/log/llupdates.log | 
stdbuf -oL sed -n -e '/\[*$/ s/^/# /p' -e '/\*$/ s/^/# /p'| 
zenity --progress --title="Updating..." --pulsate \ 
--width=600 --auto-close ) 
 
                                if [ "${PIPESTATUS[0]}" -ne "0" ]; then 
                         
                                        zenity --error \ 
                                        --title="Error" --text="$APPNAME Updates have failed." 
                                        exit 0 
                                fi 
 
                else 
 
                                        exit 0 
                fi 
 
PROCEED=$(zenity --question --title="$APPNAME Updates" --window-icon=/usr/share/icons/zenity-llcc.png --text="Updates have finished installing.\n\nWould you like to view the $APPNAME Updates log?"; echo $?) 
if [ ${PROCEED} -eq 1 ]; then 
   zenity --info --title="$APPNAME Updates" --window-icon="${INSTALL_ICON}" --text="$APPNAME Updates Complete." 
   exit; 
else 
   zenity --text-info --title="Updates Log" --width=700 --height=300 --filename="/var/log/llupdates.log" 
fi 
 
exit 0
 
Here you've used the title to give info on the next step
 Code: zenity --text-info --title="List of available Updates - Click OK to continue or Cancel to stop the update process" --width=700 --height=300 --filename="/tmp/updateslist "
 There is another approach 
I've used stream editor in the script to insert two lines into /tmp/updateslist
 Code: #Insert text into  /tmp/updateslist 
sed -i -e '1 i\#########                     List of available Updates                                           ##############' -e '1 i\#########  Click OK to continue or Cancel to stop the update process         ##############' /tmp/updateslist
  
	 
	
	
	
	
 
 
	
	
	
		
	Posts: 9,009 
	Threads: 567 
	Joined: Feb 2014
	
 Reputation: 
 12
	 
 
	
	
		I think I prefer the existing method of handling the gdebi/synaptic check, it's simpler and quicker. 
Also running your new code I still get the 'List of available Updates - Click OK to continue or Cancel to stop the update process' existing dialog, not your new one, but this time it's empty when there are lots of updates for my machine:
  
	 
	
	
	
	
 
 
	 
 |