apt is a command line utility for installing, updating, and removing deb packages on Ubuntu, Debian, and their derivatives.
This is because the apt command integrates the functions of apt-get, apt-cache & apt-config along with essential commands in a well organized manner.
apt command is suitable for end users and does not contain some of the additional features of apt-get command. apt was designed to fix some of the fundamental dependency flaws in apt-get.
After Ubuntu 16.04 release, the apt command grabbed attention from users, rather than the traditional apt-get command.
In this tutorial, we will show you how to use apt commands to manage packages in Debian and Ubuntu based Linux distributions.
Refer the following article to know the difference between apt vs apt-get command.
Common syntax & file location of apt command
General syntax of apt command is as follow.
apt [options] [package 1] [package 2]...[package n]
Important apt configuration files are as follow.
|/etc/apt/apt.conf||Main apt configuration file|
|/etc/apt/sources.list||Main apt source repositories configuration file|
|/etc/apt/sources.list.d/||apt additional software repositories configuration location|
|/var/cache/apt/archives/||apt’s cached files are located|
|/var/log/apt/history.log||Most recent apt history logs|
1) Updating package index
APT package index is a database that contains information of available packages from the various repositories enabled in system.
Run the following command to update the package database, which pulls the updated package records from the APT repositories.
$ sudo apt update
2) Installing packages with apt
If you already know the name of the package that needs to be installed, use the following command and replace the [package_name] with the desired package.
sudo apt install [package_name]
For example, to install apache2, run the below command. Add
-y with the apt command to bypass confirmation from you when installing the package.
$ sudo apt install apache2
$ sudo apt -y install apache2
To install multiple packages at once, specify them with space-separated.
$ sudo apt install [package_1] [package_2]
To install local deb files, run the following command.
$ sudo apt install /path/to/file.deb
3) Removing packages using apt
Run the following command to remove an installed packages from the system. At the same time multiple packages can be removed by separating them by space.
$ sudo apt remove package_name
The ‘remove’ command will uninstall the given package, but it may leave some configuration files in the system. To remove the package and associated configuration files, use the following command.
$ sudo apt purge package_name
4) Removing unused packages
Whenever a new package is installed on the system that installs related dependencies.
Unused dependency packages remain on the system whenever any package is removed using the ‘remove’ or ‘purge’ command, which are no longer needed by the system.
The ‘autoremove’ command removes all unwanted dependencies left on the system.
$ sudo apt autoremove
5) Upgrading packages
Available updates must be installed regularly to keep the system up-to-date and more secure.
Run the following command to upgrade the all installed packages to their latest versions, but existing package will never removed.
$ sudo apt upgrade
To upgrade a single package, run:
$ sudo apt install --only-upgrade package_name
6) How to use full-upgrade
full-upgrade works the same as upgrade, but it also removes the installed packages if needed to perform system upgrades.
$ sudo apt full-upgrade
7) Searching packages
If you do not know the exact package name you want to install, use the search command that returns the matching string. For example, run the following command to search the list of packages related to ftp.
$ sudo apt search ftpd p atftpd - advanced TFTP server p atftpd:i386 - advanced TFTP server p ftpd - File Transfer Protocol (FTP) server p ftpd:i386 - File Transfer Protocol (FTP) server p ftpd-ssl - FTP server with SSL encryption support p ftpd-ssl:i386 - FTP server with SSL encryption support p gadmin-proftpd - GTK+ configuration tool for proftpd p gadmin-proftpd:i386 - GTK+ configuration tool for proftpd p gadmin-proftpd-dbg - GTK+ configuration tool for proftpd debug p gadmin-proftpd-dbg:i386 - GTK+ configuration tool for proftpd debug
8) Check package information
To know the detailed information about a package before proceeding with the installation. Use the below command which gives package dependencies, version, installation size, packages source, etc,.
$ sudo apt show nano Package: nano State: installed Automatically installed: no Version: 2.2.6-1ubuntu1 Priority: standard Section: editors Maintainer: Ubuntu Developers <[email protected]> Architecture: amd64 Uncompressed Size: 614 k Depends: libc6 (>= 2.14), libncursesw5 (>= 5.6+20070908), libtinfo5, dpkg (>= 1.15.4) | install-info Suggests: spell Conflicts: pico, pico, nano Breaks: alpine-pico (<= 2.00+dfsg-5), alpine-pico (<= 2.00+dfsg-5) Replaces: pico, pico Provides: editor Description: small, friendly text editor inspired by Pico GNU nano is an easy-to-use text editor originally designed as a replacement for Pico, the ncurses-based editor from the non-free mailer package Pine (itself now available under the Apache License as Alpine). However, nano also implements many features missing in pico, including: * feature toggles; * interactive search and replace (with regular expression support); * go to line (and column) command; * auto-indentation and color syntax-highlighting; * filename tab-completion and support for multiple buffers; * full internationalization support. Homepage: http://www.nano-editor.org/ </[email protected]>
9) How to clear apt cache
This command removes ‘.deb’ files for packages that are no longer installed on your system, removing these files from ‘/var/cache/apt/archives’ directory may free up a significant amount of disk space.
$ sudo apt clean $ sudo apt autoclean
10) Downloading ‘.deb’ package
To download a ‘.deb’ package without installing it, run the following command
$ sudo apt download package_name $ sudo apt download nano
11) Check broken dependencies
It is is a diagnostic command which update package lists and check for broken dependencies.
$ sudo apt check
12) Fix broken packages
When you encounter “unmet dependencies” when installing the package, run the below command to repair the broken packages.
$ sudo apt -f install
13) Listing packages
The ‘list’ command will display the available, installed and, upgradable packages.
To list all available packages use the following command
$ sudo apt list
To list available package updates.
$ sudo apt list --upgradeable
To list only the installed packages.
$ sudo apt list --installed
14) Finding files belonging to a particular package
Use the below command to find files and their location which is belongs to a particular package.
$ sudo apt content package_name $ sudo apt content nano /. /bin /bin/nano /bin/rnano /etc /etc/nanorc /usr /usr/bin /usr/bin/nano /usr/share /usr/share/doc /usr/share/doc-base
Use the command below to find a list of files in the package.
$ sudo apt contains package_name
15) Checking package dependencies
Run the following command to check all dependencies for a particular package.
$ sudo apt depends package_name $ sudo apt depends nano nano Depends: libc6 Depends: libncursesw5 Depends: libtinfo5 |Depends: dpkg dpkg:i386 Depends: install-info install-info:i386 Suggests: spell Conflicts: Conflicts: Breaks: alpine-pico Breaks: alpine-pico:i386 Replaces: Replaces: Conflicts: nano:i386
To verify missing dependencies for a package.
$ sudo apt recommends nano
No missing recommended packages were found for nano
16) How to check installed package version
Run the below command to verify the version of package installed in the system.
$ sudo apt version nano 2.2.6-1ubuntu1
17) Checking changelog of the package
The ‘changelog’ command is used to check the list of changes were made on the package by the development team. Often, it is used to verify that a particular ‘CVE’ issue has been fixed.
$ sudo apt changelog package_name $ sudo apt changelog curl curl (7.35.0-1ubuntu2.6) trusty-security; urgency=medium * SECURITY UPDATE: NTLM credentials not-checked for proxy connection re-use - debian/patches/CVE-2016-0755.patch: fix ConnectionExists to compare Proxy credentials in lib/url.c. - CVE-2016-0755 -- Marc Deslauriers <[email protected]> Tue, 26 Jan 2016 12:10:58 -0500 curl (7.35.0-1ubuntu2.5) trusty-security; urgency=medium </[email protected]>
18) Adding PPAs
Use the below command to add a third party PPAs in the system.
$ sudo apt add-repository ppa:PPA_name
19) apt man page
If you want to explore any other commands not listed here, go to the man page of the apt command.
$ man apt or $ apt --help
This tutorial explains how to manage packages using apt command in Debian/Ubuntu systems.