LINUX LITE 7.2 FINAL RELEASED - SEE RELEASE ANNOUNCEMENTS SECTION FOR DETAILS


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
GUI Updates script
#11
(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 Smile
Here you go, pall. Smile
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
Reply
#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 Smile
Here you go, pall. Smile
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 Smile
Reply
#13
New versions uploaded, credits to misko in the updates script.

First post script updated too.
Reply
#14
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.freecinema2022.gq
#-----------------------------------------------------------------------------------------

# 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
Reply
#15
I have 1.06 can i run the script or? /ivar
Reply
#16
(11-22-2014, 12:38 AM)iwar link Wrote: I have 1.06 can i run the script or? /ivar

You can.
Reply
#17
Some nice additions there misko Smile I think we should remove the checklist though, new folk could interrupt this incorrectly.
Reply
#18
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

[Image: eFfjkiL.png]
Reply
#19
(11-22-2014, 06:39 AM)Jerry link Wrote: Some nice additions there misko Smile I think we should remove the checklist though, new folk could interrupt this incorrectly.
OK, checklist is removed Smile
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.freecinema2022.gq
#-----------------------------------------------------------------------------------------

# 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
Reply
#20
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:

[Image: afOCnyA.png]
Reply


Forum Jump:


Users browsing this thread: 5 Guest(s)