In this article, let us learn about the command “apt upgrade” and see how that differs from the command “apt full-upgrade“.
When I was a complete beginner and I needed to do something on my Ubuntu machine, I went online and typed in “How to do ______ on Ubuntu” and sometimes it led me to a page with some commands which looked like this
sudo apt update sudo apt upgrade . . .
While other times the commands looked like this
sudo apt update sudo apt full-upgrade . . .
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 the command “apt upgrade” means and how that differs from the command “apt full-upgrade“.
I have tried to write this article 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 “apt upgrade” does, how it does that, how it differs from the command “apt full-upgrade“, and the reason you need to do this every now and then 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 difference between the command “apt upgrade” and “apt full-upgrade“? apt upgrade is the command used to download and apply any available updates to your packages in a safe manner by not removing packages that are previously installed in a given Linux system, while “apt full-upgrade” command is used to do the same thing except if needed previously installed packages are removed to make the upgrade happen.
Let us have a look at their differences in the form of a table.
|apt upgrade||apt full-upgrade|
|Does not remove any packages and skips upgrading old packages if removal is needed||Removes old packages if needed to perform the upgrade of packages to their latest versions|
|safer option||Caution needed|
|Usually done during the life-cycle of a distro release.|
E.g. If you are on Ubuntu 20.4 LTS you can use this command to upgrade packages till 2025
|Usually done at the end of the life-cycle of a distro release.|
E.g. In 2025, if you wish continued updates, you need to do a full-upgrade to the next LTS release.
I can see that the above paragraph and table has too many “technical terms” (which I promised not to use!) but that is just the short version of the answer, so do not worry if you don’t understand every word in that paragraph!
After reading this article 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!
apt upgrade vs full-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.
The output of the command “sudo apt upgrade” is shown in the screenshot below
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.
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 as long as you don’t have to give back the old ones as they might be still useful to some people working on your factory!
In contrast, when we run the apt full-upgrade command, we are saying to the apt package manager that it can uninstall packages if needed, which in our factory analogy means the manager can throw away the older macs if needed!
This is usually needed when performing an upgrade from one release to the next as some newer packages may need the absence of some older dependencies to run properly!
One corner case where this might do you more harm than good is when you may have some custom software on your Linux system which may be dependent on the older packages, and these custom software which you have built and installed yourselves might not be known to the apt tool, so removing that package might not be the best thing to do!
Another corner case example is, say you have a favorite package pX which depends on a package dX1 to run. But this package has been replaced by package pY in the latest distro release and this pY needs pX2 to be present and pX1 to be absent in order to run. In that case, a full-upgrade will leave you with a broken pX and a working pY, which might not be what you want!
So best practice is to read through what packages will be removed before typing Y and pressing the Enter Key! Debian recommends the following 13 step procedure before preforming a full upgrade
If you are lucky like me, “full-upgrade” command might not need to remove any packages as shown in the screenshot below.
In my case, the outputs of both “upgrade” and “full upgrade” command outputs look the same as there were no package conflicts and hence no removal needed!
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 individual words in our commands (apt, upgrade, and full-upgrade) mean?
- Why do we need this command for updating software?
- When to use which one? 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
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
- Through the Graphical User Interface, a.k.a GUI and
- Through the Command Line Interface, a.k.a CLI
But, what is an “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!
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.
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.
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.
The command-line usually consists of the following 4 parts
- options and
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 individual words in our commands (apt, upgrade, and full-upgrade) mean?
Let us try to break the command-lines “apt upgrade” and “apt full-upgrade” into their building blocks and try to figure out the meaning of each word.
As you can see in the above picture, the command-line “apt upgrade” contains the command named “apt” and the sub-command named “upgrade” and we have no options or arguments in this command line.
Similarly, the command-line “apt full-upgrade” contains the command named “apt” and the sub-command named “full-upgrade” and we have no options or arguments in this command line.
We normally prepend these commands with the term sudo. Let us have a brief look about meaning of sudo
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.
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
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.
Now that we have understood the fundamentals, I suggest you go back to the “Short version of the Answer” section in the beginning of the article and see if you can understand them better!
Before we finish the article, I would like to impart you with a simple yet useful pro-tip!
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.
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 screenshot above, if you have a look under the Description sub-heading, you will see the following lines.
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
If you scroll down a bit more you will find the upgrade and full-upgrade sub-commands as shown in the screenshot below.
As you can see, the few lines in the screenshot above serves as a very good summary of this article!
Thus 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!