If you are just getting started with Ubuntu or any other Debian based Linux distributions, it is more likely than not for you to have used or heard of the
APT stands for Advanced Package Tool. It is a command-line tool that interacts with the
dpkg packaging system. APT is probably the most efficient way of managing software via the terminal for Ubuntu and any other Debian based Linux distributions.
One of the great things about
apt is that the default repositories are usually kept quite up to date with the latest stable software packages. It also has great dependency management and ensures system stability.
Before you get started you would need an Ubuntu or Debian based server.
I would recommend using DigitalOcean if you do not have an account you can use the following link to get a $100 free credit and spin up your own servers in seconds:
apt update command is used to update the package database.
You should always run
apt update before trying to install any new package, that way your system would know if there are any newer packages available.
sudo apt update
Hit:1 https://repos.insights.digitalocean.com/apt/do-agent main InRelease Get:2 http://mirrors.digitalocean.com/ubuntu bionic InRelease [242 kB] Get:3 http://mirrors.digitalocean.com/ubuntu bionic-updates InRelease [88.7 kB] Get:4 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB] Get:5 http://mirrors.digitalocean.com/ubuntu bionic-backports InRelease [74.6 kB] Fetched 494 kB in 1s (693 kB/s) Reading package lists... Done Building dependency tree Reading state information... Done 69 packages can be upgraded. Run 'apt list --upgradable' to see them.
apt update, which only updates your local package database with the latest information from the repositories, the
apt upgrade command actually upgrades your installed packages.
As you can see in the output above, there are 69 packages which can be upgraded on my Ubuntu server. If I were to run the
apt list --upgradable command I would get a list of those packages. This would include things like some Python, PHP and even some system libraries upgrades:
python3-apport/bionic-updates 2.20.9-0ubuntu7.15 all [upgradable from: 2.20.9-0ubuntu7.14] python3-apt/bionic-updates 1.6.5ubuntu0.3 amd64 [upgradable from: 1.6.5ubuntu0.2] python3-distupgrade/bionic-updates 1:18.04.37 all [upgradable from: 1:18.04.34] python3-gdbm/bionic-updates 3.6.9-1~18.04 amd64 [upgradable from: 3.6.8-1~18.04] python3-problem-report/bionic-updates 2.20.9-0ubuntu7.15 all [upgradable from: 2.20.9-0ubuntu7.14] python3-software-properties/bionic-updates 0.96.24.32.13 all [upgradable from: 0.96.24.32.11] python3-update-manager/bionic-updates 1:18.04.11.13 all [upgradable from: 1:18.04.11.10] software-properties-common/bionic-updates 0.96.24.32.13 all [upgradable from: 0.96.24.32.11] sosreport/bionic-updates 3.9.1-1ubuntu0.18.04.2 amd64 [upgradable from: 3.6-1ubuntu0.18.04.3] systemd/bionic-updates 237-3ubuntu10.41 amd64 [upgradable from: 237-3ubuntu10.38]
To actually upgrade those packages just use the following syntax:
sudo apt upgrade
You would get a list of the packages that would be upgraded and you will be asked if you want to continue:
69 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 37.3 MB of archives. After this operation, 556 kB of additional disk space will be used. Do you want to continue? [Y/n]
Then just type
y and hit enter. Depending on the size and the number of the packages it might take a while to complete.
If you want to skip the confirmation step, you could pass the
sudo apt upgrade -y
You could even combine the two commands as follows:
sudo apt update && sudp apt upgrade -y
Installing a new package with
apt is quite straight forward. For example, let's say that we wanted to install PHP on our Ubuntu server, all you need to run is the following:
sudo apt install php
You could also install multiple packages at once by providing a list of the packages that you want to install. For example, let's say that we wanted to install some additional PHP modules, rather than running the
apt install command separately for each one, we could use the following:
sudo apt install php-mysql php-common php-mbstring php-xmlrpc
As you saw in the previous step, if you know the name of a package, installing it is quite straight forward. However, if you are unsure of the exact name of a package, you could use the
apt search command to search for packages in the repository.
For example, let's say that you need to install MySQL on your server if you run
sudo apt install mysql you would get back
Unable to locate package mysql message. This is because there are 2 packages for MySQL, one for the MySQL server and one for the MySQL client, so to get the exact name of the package you could run:
sudo apt search mysql
You would get a list of a lot of packages and some information for each, but if you look closely you would see the ones that you need,
mysql-server/bionic-updates,bionic-security,now 5.7.30-0ubuntu0.18.04.1 all MySQL database server (metapackage depending on the latest version) ... mysql-client/bionic-updates,bionic-security,now 5.7.30-0ubuntu0.18.04.1 amd64 MySQL database client binaries
So in order to install MySQL, you would need to run:
sudo apt install mysql-server mysql-client
You can remove packages as quickly as you can install them. Let's say that we wanted to remove
php, all you need to do is run the following command:
sudo apt remove php
One thing that you need to keep in mind is that
apt remove would only remove the binary files and keep the configuration files on your system.
If you wanted to completely remove a package, you should then use the
apt purge command.
apt remove the
apt purge command would uninstall a package from your system but it would also remove the configuration files associated with that package.
sudo apt purge php
apt autoremove is a very handy tool for cleaning your system from any packages and libraries that are no longer in use.
sudo apt autoremove
This is quite handy if you are running low on disk space and need to quickly free up some additional MBs.
What I usually like to do is to add the
sudo apt --purge autoremove
That way any configuration files for the packages will be removed as well.
APT is a great package manager which could make your life a lot easier.
It helps you quickly install stable and tested packages without having to compile anything from source.
Hope that this helps!