One Single Command to Update Everything in Ubuntu?
I Know That There Are Three Command to Update and Then Upgrade the Whole System, These Are: Sudo Apt Update: Fetches the List of Available Updates Sudo Apt...
I know that there are three command to update and then upgrade the whole system, these are:
sudo apt update: Fetches the list of available updatessudo apt upgrade: Strictly upgrades the current packagessudo apt full-upgrade: Installs updates (add or remove packages), equivalent of dist-upgrade
Is there a super-upgrade command that combines all these commands to one?
9 Answers
There are 3 decent choices:
You could create a script something like the following:
#!/bin/bash set -e sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgradeCall it something like
update.shand place it in/usr/local/binand then make the script executable by running:sudo chmod +x /usr/local/bin/update.shAnother method would be to create a bash alias (in
~/.bashrc) or wherever you normally store your aliases:alias update='sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade'A final method would be to simply string the 3 commands together on the commandline:
sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade
A few choices...
Reference:
We can have a one-liner command (no need to scripts, just copy-paste)
sudo apt update -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt clean -y && sudo apt autoclean -y
update- updates the list of packages but do not installupgrade- install new versions of packages if new versions are availablefull-upgrade- performs the function of upgrade but will remove currently installed packages if this is needed to upgrade the system as a whole (fixing bad dependencies then)autoremove,autocleanandclean- clean old packages which are not needed any more- option
-ydoes not request for permission on every step &&states that it just runs the next command if the previous was successfully executed
If you are annoyed by too much typing, you can define yourself an "alias". This can be done e.g. by adding a line to the end of your $HOME/.profile like this:
alias sau='sudo aptitude update && sudo aptitude upgrade'
(of course you can replace "sau" by something else -- for me that's an acronym to Sudo Apt-get Update). After saving the file, open a new shell (or "source" the .profile again running . $HOME/.profile. Now you can always simply type "sau" to do the complete job. Works great for me with multiple machines.
Unfortunately, the two commands have to be executed separately.
Is there a super-upgrade command that combines all these commands to one?
Well.. bad news is that no, there isn't. Good news though is that here I've put together one.
And to go on with the idea of simplification I've turned its creation into a "single" command line. So here it is:
echo "sudo apt update && sudo apt -y upgrade && sudo apt -y dist-upgrade && sudo apt -y autoremove && sudo apt autoclean" > update && sudo mv update /usr/local/bin/update && sudo chmod +x /usr/local/bin/update
Now, whenever the need for updating arises you just type update in the terminal, input your password and voilà.
This might look like one of those incomprehensible things you only copy-paste from. But it doesn't really have to be ! See it's actually quite simple, so..
Must Read
What this is :
- Every update command (and then further commands) were concatenated using
&&(includingapt autoremoveto remove no longer used dependencies). -ywas added to everyaptcommand that would otherwise prompt for a positive answer to perform its actions.echowas placed in front of the command and the line was surrounded with""so its characters wouldn't escape.>was used to redirect/writeecho's output (our line) to an "update" file.- The file is moved to
/usr/local/bin/so it is executable from anywhere. Writing on this path requires superuser access which is why it's not possible to do it in the step before. - The file was turned into an executable using
chmod.
sudo apt install unattended-upgrades
This is the best line yet. All the other solutions, you have to type the one line over and over again every day. This is truly the one-command solution. See official apt documentation from Ubuntu!
By editing the .conf files of this package in /etc you can set the frequency of update, install, clean, autoremove...
Or simply and email including A notification that an update is available with the list of package names.
A nice little log file is generated with each change, and I imagine a little script could be written as a GUI extension to pop up in the desktop notifications too (off-topic).
just copy paste the following alias command and execute it:-
$ alias fup='sudo apt-get -y update;sudo apt-get -y full-upgrade;sudo apt-get -y autoremove; sudo apt-get -y autoclean'
now, execute it as
$ fup
it will automatically do all its jobs.
Now, you may need to use this frequently. So for that create a file name .bash_aliases in your HOME directory and pase this following command mentioned above as alias like:-
$ touch ./.bash_aliases
now save the file and exit, after this edit your .bashrc file to export your .bash_aliases file for everytime you need to run this command by.
$ gedit .bashrc
now paste the following code in the end of file.
if [ -f /home/abhyam/.bash_aliases ];then
source /home/abhyam/.bash_aliases
fi
now save the file and exit and so source .bashrc
now you can run the command fup to fully update and upgrade your system anytime.
The benifit of creating that .bash_aliases file is you can also create custom aliases in that file for future help and that will automatically sourced each time you open a terminal.
Thank you.
Found this elsewhere:
sudo -- sh -c "apt update && apt upgrade -y"
Can also alias this to use 'upgrade' in your ~/.bash_aliases with something like:
alias upgrade="sudo -- sh -c 'apt update && apt upgrade -y'"
and do a 'source ~/.bash_aliases' to make it work
I found this thread looking for the same treasure. In case anyone is still interested, I've been working on a git project which runs through the same commands.
#!/usr/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
PURPLE='\033[0;35m'
NC='\033[0m' # No Color
#Region --- Updates
echo -e "${PURPLE}RUNNING: sudo apt update --fix-missing${NC}"
for i in {1..100}
do
sudo apt clean
sudo apt update --fix-missing
status=$?
if test $status -eq 0
then
echo -e "${GREEN}SUCCESS: sudo apt update --fix-missing${NC}\n"
break
else
echo -e "${RED}FAILED: sudo apt update --fix-missing${NC}\n"
sleep 1m
fi
done
#Region --- Upgrades
for i in {1..100}
do
echo -e "${PURPLE}RUNNING: sudo apt upgrade -y${NC}"
sudo apt full-upgrade -y
status=$?
if test $status -eq 0
then
echo -e "${GREEN}SUCCESS: sudo apt upgrade -y${NC}\n"
break
else
echo -e "${RED}FAILED: sudo apt upgrade -y${NC}\n"
sleep 1m
fi
done
#Region
for i in {1..100}
do
echo -e "${PURPLE}RUNNING: sudo apt autoremove -y${NC}"
sudo apt autoremove -y
status=$?
if test $status -eq 0
then
echo -e "${GREEN}SUCCESS: sudo apt autoremove -y${NC}\n"
break
else
echo -e "${RED}FAILED: sudo apt autoremove -y${NC}\n"
sleep 1m
fi
done
#Region --- Exiting BasherUpdate
echo -e "${PURPLE}Exiting BasherUpdate...${NC}\n"
exit 0
Note that I used a loop on the apt update command because I was getting mirror sync in progress errors and wanted it to keep trying. Hope this helps and let me know if you have suggestions!