“sudo apt upgrade” Command Explained For Beginners!

In this article, let us learn about the command “sudo apt upgrade”.

When I was a complete beginner and I needed to install something on my Ubuntu machine, I went online and typed in “How to install <software name> on Ubuntu” and it led me to a page with some commands which looked like this

sudo apt update
sudo apt upgrade
sudo apt install <software name>

I was just happy that I was able to type something in the Terminal and that it actually worked and did what I wanted it to do! I did not pay much attention to what I actually typed in. I guess to beginners, it just feels like a magic spell to get something installed!

In this article, I have tried to explain what this command means from a beginner’s perspective avoiding unnecessary “technical terms” and I have tried to keep this article concise so that you can get through the entire article in about 10 to 20 mins max!

Let us see what this command does, how it does that, and the reason you need to do this every time you need to install an app on your Linux computer.

For those of you in a hurry, here is the short version of the answer!

The Short Version of the Answer

What is the meaning of the command “sudo apt upgrade“? sudo apt upgrade is the command used to download any available updates and apply them to the out-dated packages installed in a Linux system.

I can see that the above paragraph has too many “technical terms” (which I promised not to use!) but that is just the short version of the answer to explain the command “sudo apt upgrade“, so do not worry if you don’t understand every word in that paragraph!

By the end of this article we will get back to this short answer version and by that time I am sure you will be able to understand what every word meant in the short answer above!

So let us begin!

sudo apt upgrade

Let us start by exploring the answer to the question “What does apt do?”

The apt command is responsible for installation, removal, and updating of software in our system.

A good analogy is to think of your computer as a factory and the apt command as the manager in that factory who is responsible for the installation of new equipment, removal of equipment that is no longer needed, and update desired equipment to their latest versions, while maintaining records of the equipment names and versions which are currently present in the factory.

factory

The output of the command “sudo apt upgrade” is shown in the screenshot below

output1: sudo apt upgrade

Your output might look a bit different than mine, but the important things to note here is the line that says “The following packages will be upgraded:”. The packages mentioned in the following line have newer versions available no the repo and once you press “Y”(for yes) and press the “Enter” button, the apt application will download and install the updated packages on your Linux machine as shown in the screenshot below.

output2: sudo apt upgrade

For example say software_X has version 1.2.2 installed on our system, but a newer version, say 1.3.1 is available in the repo. After running the sudo apt upgrade command, software_X will be updated to version 1.3.1.

Continuing with our factory analogy, let us say all the workers are using a 2015 Macbook model for doing all computer tasks. Now by giving the “upgrade” command to our manager, we are in essence telling him to buy the latest available Macbook and replace the old ones!

If you still have an “incomplete feeling” about what this command means, read on for a longer and more informative answer where I explain the answers to the following questions

  • Command Line Interface vs Graphical User Interface: What is the need to have these 2 interfaces?
  • What is a command-line?
  • What do the 3 words in our command (sudo, apt, and upgrade) mean?
  • Why do we need this command for updating software? and
  • Where to get more information about these commands?

So let us carry on with our exploration of the Linux world!

Let us start by exploring the world of text-based command line interface!

Command Line Interface vs Graphical User Interface

For those of you who love learning via videos, here is one we made to explain this concept!

If you are looking for some quiet reading time, then skip the video and read on!

Let us first begin with this basic question of why use the command-line interface in the first place! Why not simply download and install an app instead?

As you might already know there are 2 types of ways for us to interact with the computers

  1. Through the Graphical User Interface, a.k.a GUI and
  2. Through the Command Line Interface, a.k.a CLI

But, what is an “Interface”?

Interface

Interfaces can be thought of as the middleman between you and the machine, a way to make the machine understand what your wishes are. A TV remote is a good example of an interface, as this device acts as a middleman between you(the human) and your TV(the machine). Using a remote you can interact with your television, hence your TV remote is an interface!

TV Remote: Example of an Interface.

Graphical User Interface

The graphical user interface is the interface we are all familiar with, where we use our mouse or the touch screen to click through various icons and perform the desired action on our computers. This interface was made to make the operations on computers easier for regular users who might not be as tech-savy as programmers or software engineers.

Graphical User Interface

Command Line Interface

Before GUI, in the computing world, the uses/applications of using a machine like a computer were very limited and there was another way to run programs on the computers, which is via the CLI. Through CLI, which is a text-only interface, specialists can run their desired programs.

Command Line Interface

There are several advantages of CLI compared to the GUI. The 3 main advantages of CLI are listed below

  • since the CLI came first, this means GUI is still playing “catch-up” and this means you can do more things through the CLI than through the GUI
  • CLI is very resource-efficient (most of what you pay for in terms of hardware like CPU, GPU, mouse, touch-pad, touch-screen are all made for the main purpose of running the GUI. Because of the resource efficiency, almost all of the webservers and cloud infrastructure are run via CLI without a GUI.
  • Once you become a power user of Linux on the CLI, you can do a lot of fun projects which you never thought possible! This can include things like hosting your own website straight from your laptop, or tweak your old laptop to run as smoothly as a freshly bought one!

Now that we have established the fact that the command line interface is very useful, let us learn a few basics of the CLI. Let us start by answering the question, ‘what is a command line?’

What is a command-line?

A command-line is a line of text which tells our computer to perform a specific action.

As you might already know the words used in the text are specific for a given purpose and not some random text.

For example, a computer will understand the command-line “sudo apt install” and not “please install software“!

Unfortunately, our computers have not reached a state where we can just order the computer around the way we see robots are instructed in science fiction movies. We are getting there with natural language processing AI, but there is an awful lot of processing involved, which is very inefficient.

Due to this inefficiency, voice input is never going to replace the good old command-line interface when it comes to cloud computing and data centers. This is because in data-centers are very power-hungry and better efficiency translates into lower power consumption and lower running costs, which means more profit for the company!

Next let us see the basic structure of a command-line.

Command-Line Format

The command-line usually consists of the following 4 parts

  • command
  • sub-command
  • options and
  • arguments
command line format

Among these 3 parts, the command is mandatory. sub-command, options, and arguments are optional parts though you will need them in most command-lines!

What do the 3 words in our command (sudo, apt, and upgrade) mean?

Let us try to break the command line “sudo apt upgrade” into its building blocks and try to figure out the meaning of each word.

command break-up

As you can see in the above picture, the command-line “sudo apt upgrade” in question contains the command named “apt” and the sub-command named “upgrade” and we have no options or arguments in this command line.

The term sudo stands for “super-user do“. This term is used to get administrative privileges so that we can install and remove software from our computer. Usually, sudo commands are followed by a password request, this is a security measure to prevent malware from getting automatically installed on our computers.

In our factory analogy, the manager needs the company credit card to make the purchases necessary to install the conveyor, so by using the the term “sudo” in our command and typing in the password, we are giving the manager the permission to use the company credit card!

To understand what command and sub-commands mean, you can think of the main command as an app and the subcommand as a button inside that app. So in essence, you are asking your computer to open the apt app and push the button named upgrade!

What is apt?

APT stands for Advanced Packaging Tool which is a tool that is used to manage software in our system and apt is the software used to communicate this APT software management tool.

The words “manage software” in the above paragraph simply refer to these 5 basic tasks

  • install software
  • remove software
  • upgrade software
  • upgrade system
  • maintain the list of software that is installed in our system

If you are interested to learn more about how software packages are managed in Linux I highly recommend reading the article in the link below.

A Beginners Introduction To Linux Package managers: apt, yum, dpkg & rpm

Let us see how software in Linux is organized by answering the following questions.

What are packages in a Linux System?

Linux OS is basically made up of 3 parts

  • The hardware
  • The Linux Kernel and
  • Software packages that work with the Kernel to give us a complete Operating System

In simple words, hardware, as we know, includes CPU, HDD, SSD, RAM, and all the other components that make up your computer. The kernel is a special software that takes all the available hardware resources and virtualizes and manages them. The software packages are typically applications that we run which can make use of these hardware resources by requesting access to them through the kernel.

Examples of software packages can include application software like text editors, word processors, etc. or they can be the GNU utilities like bash, cron, dd, etc., or they can be device drivers to talk to the hardware.

These packages are managed by a special class of software known as “Package managers” which are explained in the article linked here.

Next, let’s have a brief look at what is included in these “Packages” of software.

Contents of packages

The content of the packages managed by these package managers involves the following 4 main components

  • Binaries or the executable programs
  • metadata files containing the version, dependencies, signatures, and other relevant information
  • documentation and manuals
  • configuration files

These packages are stored online in servers. These places are called software repositories.

What are Software Repositories?

This is the next question we must address. Repositories (or repos for short) are basically a place where verified packages are stored for easy retrieval and installation. They can be online like the APT repository or they can be on a local folder or a DVD where you have a special collection of software that you need.

This is one of the strong areas of Linux against other operating systems like Windows and Mac OSX, because on the 2 latter OSes we usually need to go to the software vendor’s website to download a software package and manually install them, whereas in Linux you can just type one line of code to get your desired software!

Also because we need to go-to some untrusted vendor website to download software, which are not curated by the OS, there can be security issues where a malware could be come along with the download, whereas in Linux as long as you stick to the official software repositories, you don’t need to worry about security issues as these software are already verified before being stored in the repo!

Windows and Mac OSX are improving this situation through their app-stores but Linux is miles ahead of other OSes in this race!

You can have several repositories from which you can download and install these packages. These can be

  • official repos of your particular distro (some have guaranteed support while others are not entirely supported) and
  • 3rd party repos

What is a Package Source List?

This is a list of packages available for installing on a given distro. This list is maintained by your Linux machine. The information in this list usually includes the locations of various repositories from which software can be installed. These locations are usually on the internet.

This list is often stored in the /etc/apt directory. You can view and edit this list the same way you can view any other text files using one of your favorite text editors like vs-code, gedit, nano or vim.

If you are using Ubuntu or one of its derivatives, you can also view this list by typing in the following command in the Linux terminal

cat /etc/apt/sources.list

The screenshot below shows the output of the above command.

As you can see from the above screenshot, this list basically contains some URLs to locations on the internet. From these locations, further information can be collected like

  • the latest bug fix updates
  • the latest version of each available package in the main repo
  • the latest version of each available package in the partner repos

If a particular URL has “#” in front of it, it will be ignored as comments.

Let’s go ahead and visit one of these repos to see what it actually contains. You can try going to this link. The screenshot below shows its contents.

Downloading and extracting the Sources.gz file gives a file named “Source” with no file extension. You can open it using any text editor and it reveals a massive file with more than 28,000 lines!

The screenshot above shows one of the packages named zsh, and the information it contains.

zsh is an alternative of bash shells, if you do not know what these packages are for, just focus on the main point here which is as you can see it contains information like

  • the latest version of the software
  • the dependencies of this particular software etc.

The Short Version of the Answer Revisited!

Now that we have seen all the necessary building blocks to answer the question in this article’s title, let us go ahead and revisit what we saw in the section “The Short Version of the Answer”.

The output of the command “sudo apt upgrade” is shown in the screenshot below

output1: sudo apt upgrade

Your output might look a bit different than mine, but the important things to note here is the line that says “The following packages will be upgraded:”. The packages mentioned in the following line have newer versions available no the repo and once you press “Y”(for yes) and press the “Enter” button, the apt application will download and install the updated packages on your Linux machine as shown in the screenshot below.

output2: sudo apt upgrade

For example say software_X has version 1.2.2 installed on our system, but a newer version, say 1.3.1 is available in the repo. After running the sudo apt upgrade command, software_X will be updated to version 1.3.1.

So in essence, what we are doing when we enter this “sudo apt upgrade” command is we are asking our Linux machine to read these lists and compare the latest version of the software available on the repos with the version of the same packages that are installed on our machines and upgrade them if a more recent version is available!

This is especially important as if you wish to install a package that depends on the latest version of another package to run.

For example, you may be downloading a package_X which might need the latest version of package_Y to run. You might already have package_Y installed but it might not be the latest version. Hence you should first update package_Y before installing package_X.

This is the reason we need to run this command regularly before we install software, because if our presently installed software packages are up-to-date, then no dependency issues can stop the software we are about to install from running perfectly!

Where to get more information about these commands?

So the next logical question to ask is, is there a better way to quickly remind yourself of what this command means without going onto the internet?

The answer is yes, it is possible and the best way to do this is by using the man command from the CLI!

man stands for manual and is used to get information about a given command along with the options and arguments the command supports. For example for our command “apt” try entering the following command-line on your terminal.

man apt

and you will get something similar to the screenshot below

To scroll this page, you can use the Enter button to go one line at a time, or you can use the space-bar to go one page at a time. If you wish to close this and get back to the terminal, just press the key Q

Now that you know how to move around man pages, let us see if what we just learned is there on the man page for the apt command.

As shown in the screenshots above, if you have a look under the Description sub-heading, you will see the following lines.

apt

apt provides a high-level commandline interface for the package management system. It is intended as an end user interface and enables some options better suited for interactive usage by default compared to more specialized APT tools like apt-get(8) and apt-cache(8).

apt man page

upgrade

upgrade is used to install available upgrades of all packages currently installed on the system from the sources configured via sources.list(5). New packages will be installed if required to satisfy dependencies, but existing packages will never be removed. If an upgrade for a package requires the removal of an installed package the upgrade for this package isn’t performed.

apt man page

By “configured sources” the manual means the sources listed in the /etc/sources.list file.

As you can see, we can get the needed information from within the Linux CLI! This is one of the many features of CLI that is very useful especially when you know what command to use but you don’t know what option to use with the command to achieve what you desire!

Alright, I will stop here, hope you have enjoyed reading this article and found this article useful!

Feel free to share it with your friends and colleagues!

Here are some of our other articles that might be interesting to you!

apt-get update vs apt-get upgrade: Differences Explained!
apt & apt-get Explained For Beginners!
DNF vs APT: Similarities and Differences Analyzed!
Photo of author
Editor
Balaji Gunasekaran
Balaji Gunasekaran is a Senior Software Engineer with a Master of Science degree in Mechatronics and a bachelor’s degree in Electrical and Electronics Engineering. He loves to write about tech and has written more than 300 articles. He has also published the book “Cracking the Embedded Software Engineering Interview”. You can follow him on LinkedIn