Managing Software

Introduction

ManyLinux distributions use a package manager to handle the installation, upgrades, and uninstalls of the software on a system. The Ubuntu distribution uses a package manager called dpkg and a front-end called apt (advanced package tool). We will use apt to install, update, and remove software from our servers.

sudo

To use the package manager, we will need the sudo command. The sudo command allows us to execute a command as another user (see man sudo). By default, the sudo command executes a command as the superuser (see man 8 sudo).

The name of the superuser account is root. Th root user can perform administrative tasks that regular users cannot. For security purposes, regular accounts may not add, remove, or update software on a system, nor may they modify most files or directories outside their home directories. Using sudo allows regular users who have administrative privileges to perform maintenance tasks on our systems by using executing commands as the root user. Some consider this safer than logging in as the root user.

Not all regular users can use the sudo command. On regular Ubuntu distributions, users must belong to the sudo group in order to run the sudo command. The groups command will return a list of groups that your account belongs to. On the Ubuntu version used by the Google Cloud Platform (GCP), your user should belong in the google-sudoers group. The difference between the sudo group on regular Ubuntu distributions and the google-sudoers GCP version is that regular users in the google-sudoers group are not prompted for their password.

Down the line, we will use the sudo command to modify files, create directories, and perform other maintenance tasks needed to install and manage software. In this lesson, we will use sudo along with the apt commands to update our systems and install software.

sudo syntax

The sudo command is simple to use. When necessary, we use sudo by pre-pending it to the regular commands that we have already learned. In our home directories, for example, we don't need to use sudo to create a new directory with the mkdir command. Instead we type something like mkdir data to create a new directory/folder called data. But our regular user doesn't own the files or directories outside our home directory. For example, when we downloaded my bash scripts to the /usr/local/bin directory, we used sudo since don't own that directory. If I want to create a data directory in /usr/local/bin, then I have to use sudo at the beginning of my command:

cd /usr/local/bin
sudo mkdir data

Or, without changing to that directory, I can just specify the full path:

sudo mkdir /usr/local/bin/data

Or if I want to create a file in some other directory outside my home directory, then I have to use sudo there, too:

cd /srv
sudo touch data.csv

Or, without changing to that directory, I can specify the full path:

sudo touch /srv/data.csv

apt

We will use sudo in the above ways soon enough, but for now, we will use sudo to install, update, and uninstall software on our systems.

Next I'll demonstrate the apt commands that we'll need.

sudo apt update

Your system keeps a record of what software is installed on your system and their version numbers. The sudo apt update command updates that list and compares the update to what's installed. That is, if you have a piece of software called acme1.1 on your system, and acme1.2 is available, then running sudo apt update will let you know that you can upgrade to acme1.2. It's good practice to run sudo apt update before installing or upgrading your system. This lets your system upgrade to the most recent version of what you want to install.

In short, the command to download new package information is:

sudo apt update

sudo apt upgrade

Once the list of packages have been updated, you can upgrade with the sudo apt upgrade command if there are any upgrades. When you run this command, and if there are any upgrades, you will be prompted to proceed. You can press Y to proceed, or N to cancel.

This command is simply:

sudo apt upgrade

If you want to install a piece of software, then you have to install it using its package name. Sometimes that means we have to search for the name of the package. This apt command does not require the use of sudo. sudo is not required because apt search does not modify the system. It simply helps you search for a package name.

For example, the man pages provide helpful documentation about how to use the commands on our systems, but the man pages can also be dense and not straightforward.

Fortunately, there's an application called tldr. This is a community-driven application that provides simple help pages and examples of how to use some of the most commonly used commands.

To search for the tldr package, we execute the following command:

apt search tldr

This returns a list of results that match the search query. One of those results is the tldr package, which is simply named tldr. Not all packages are simply named, which is why we need to search for the specific name.

Note that sometimes when we search for a package, the list of results is quite long. In those cases, pipe the above command through the less pager to page through the results: apt search <packagename> | less

apt show

If we want more specific information about a package, we can use the apt show command along with the package name. Therefore, to get more information about the tldr application, we execute the following command:

apt show tldr

This will return a fuller description of the package (usually), as well as the URL to the application's website, plus other details. We do not need to use sudo because we are not modifying the system. We are only retrieving information.

sudo apt install

To install the tldr application, we use the sudo apt install command along with the package name. We want to make sure that the name of the package is exactly what was returned from the apt search command. In the tldr case, it's pretty straightforward. To install:

sudo apt install tldr

sudo apt remove

In order to remove a package, we use the sudo apt remove command. I like to add the --purge option because this also removes system configuration files that I probably do not need. That is, some applications install configuration files (configs) in the /etc directory. Adding --purge will remove those configs.

To remove a package and its system configuration files (if any), we run the command with the package name:

sudo apt --purge remove tldr

Some configs are stored in your home directory. Generally only end user applications install configs in our home directories. The --purge option will not remove those configs; instead, we have to remove them manually if we want.

sudo apt autoremove

One of the great things about dpkg and apt is that it installs and handles software dependencies really well. Few computer applications are self-contained, and they often require other software to operate. These other software are called dependencies. When we uninstall (or remove) applications, the package manager does not auto uninstall those dependencies that were installed with it. We use the autoremove command to uninstall those, which helps keep our systems clean:

sudo apt autoremove

sudo apt clean

When we install packages, some files are installed with them. The sudo apt clean removes those extra files and frees up disk space. It's a simple command:

sudo apt clean

The dpkg Command

If you use Windows, then you are likely familiar with downloading and installing .exe files. On macOS, the equivalent are .dmg files. The Ubuntu distribution has an equivalent file. These are .deb files. These files can be installed using the dpkg command:

sudo dpkg -i <file_name.deb>`

Like with exe or dmg files, you want to be careful installing deb files you find on the web. Unlike software managed by the apt system, these files are not monitored and can contain malicious code.

You can generally use apt to remove applications installed with dpkg. Or, you can uninstall an application installed with dpkg with dpkg:

sudo dpkg --purge <application_name>

In most cases, stick with apt.

Conclusion

The apt command makes it quite easy to manage software on our systems. We will use this command to install more complicated software later. Here's a list of commands we covered:

  • sudo apt update
  • sudo apt upgrade
  • apt search
  • apt show
  • sudo apt install
  • sudo apt --purge remove
  • sudo apt autoremove
  • sudo apt clean

To locate and install software

sudo apt update
apt search <package_name>
apt show <package_name>
sudo apt install <package_name>
sudo apt --purge remove <package_name>
sudo apt autoremove
sudo apt clean

To keep system up to date

sudo apt update
sudo apt upgrade
sudo apt autoremove
sudo apt clean