112

In order avoid typing out all of the apt-get commands when updating my computer I have made a simple alias command to do it. But I really want to be able to just type in my alias and let it do its thing and not have to wait to for the yes/no prompt to type in "y". Is there a simple way to bypass this prompt or maybe add "yes" in the alias somewhere?

Ntc
  • 1,334

6 Answers6

156

Sure, although I have never tried it as an alias but it should work:

sudo apt-get update && sudo apt-get -y upgrade
wojox
  • 11,362
14
apt-get -o Dpkg::Options::='--force-confold' --force-yes -fuy dist-upgrade

To clarify Dpkg::Options::='--force-confold' from the man-page:

--force-confold: do not modify the current configuration file, the new version is installed with a .dpkg-dist suffix. With this option alone, even configuration files that you have not modified are left untouched. You need to combine it with --force-confdef to let dpkg overwrite configuration files that you have not modified.

Pigueiras
  • 103
Vadim
  • 149
  • 1
  • 2
3
apt-get update && apt-get upgrade -y && apt-get autoremove && apt-get autoclean

This updates the packages, upgrades the packages, removes unused packages, then removes old versions of packages.

You can copy paste that into:

nano -w yourscript.sh

then

chmod 777 yourscript.sh

then

./yourscript.sh

So long as you use su before all those steps, which I always do.

rhY
  • 47
  • 7
    This answer goes... too far. He might not want to delete old/unused packages. Also I don't think you should ever use chmod 777 if it can be avoided. And I believe in Ubuntu the recommended way is to use apt-get rather than apt. – Andreas Hartmann Apr 01 '15 at 06:32
  • 1
    Agreed, important to answer the actual question, not go further. – jonathan Jan 28 '19 at 20:44
  • 2
    @AndreasHartmann Agreed. That script is a security risk if put on 777. Use chmod u+x instead (only sets the executable bit for the file owner) – 520 Oct 16 '19 at 13:48
  • First, you can also put sudo in front of each command and second, you can write a script that automatically generates yourscript.sh which I could provide if there is interest for that. – Cadoiz Feb 10 '23 at 11:28
1

@wojox answer is correct, but you can take the alias even further for more functionality. I have been using this for quite some time now without issue. This will perform the upgrades (confirming with -y) and then testing to see if a reboot is required. If a reboot is required, you can do so by pressing [ENTER], or cancel and reboot later by pressing [CTRL+C]. If no reboot is required, the alias finishes letting you know so.

My alias is sur for sudo upgrade reboot, but feel free to name it what you choose. Add the following to your .bashrc file:

alias sur='sudo apt update && sudo apt upgrade -y && if sudo test -f /var/run/reboot-required; then read -p "A reboot is required to finish installing updates. Press [ENTER] to reboot now, or [CTRL+C] to cancel and reboot later." && sudo reboot; else echo "A reboot is not required. Exiting..."; fi'

You can continue to chain more commands if you would like to do more with the same alias. Here is the complete alias from my .bashrc that will also remove unused packages:

alias sur='sudo apt update && sudo apt dist-upgrade -y && sudo apt autoremove -y && if sudo test -f /var/run/reboot-required; then read -p "A reboot is required to finish installing updates. Press [ENTER] to reboot now, or [CTRL+C] to cancel and reboot later." && sudo reboot; else echo "A reboot is not required. Exiting..."; fi'

I actually stumbled across this thread while checking to see if there is an option to skip the prompt for configuration file overwrites, which was provided in @Vadim's answer above! My new alias is this:

alias sur='sudo apt update && sudo apt -o Dpkg::Options::="--force-confdef" dist-upgrade -y && sudo apt autoremove -y && if sudo test -f /var/run/reboot-required; then read -p "A reboot is required to finish installing updates. Press [ENTER] to reboot now, or [CTRL+C] to cancel and reboot later." && sudo reboot; else echo "A reboot is not required. Exiting..."; fi'

I then push this new .bashrc file to each of my managed servers simply with:

while read HOST; do scp .bashrc username@$HOST:/home/username; done < managedhosts.txt
Cadoiz
  • 278
Mako-Wish
  • 111
1

You could also do it quietly and then get a notification when it's all done. The downside to this is you will only see errors reported and will not see what is updated.

sudo apt-get update -qq && sudo apt-get dist-upgrade -qq && echo "All up to date now!" && notify-send "All up to date now!"
0

Defining a function has been the most straightforward, universal method I've found.

I've personally never gotten the update && -y upgrade to work correctly. Some distros have a problem with a single command (or alias) using the && operator and -y argument together.

function update ()
{
    sudo apt update
    sudo apt -y upgrade
}