APT is an excellent front end or an extension to Debian's package manager, dpkg. The acronym stands for "A Package Tool" (older) or "Advanced Package Tool" (newer).

APT's main selling point is that it makes complicated things look simple. The core of APT is the library, libapt, which is hidden from the user (admin). The apt package includes various command line front ends to the library:

apt-get is used to install and remove binary and source packages.

apt-get update gets the index files known as Packages (for binary packages) and Sources (for source packages) files from a mirror specified in the /etc/apt/sources.list configuration file. These mirrors can be accessed through HTTP, FTP or local (with file:/ URIs). After the retrieval, these plain text stanza files are loaded into APT's binary database.

After that is done, it can proceed to install whichever packages you like and which are available using apt-get install packagename.

APT does the installation by invoking dpkg, and it is usually as simple as dpkg -i. However, you can choose to upgrade all the packages that have been updated by running apt-get upgrade or apt-get dist-upgrade, which can include some critical system components. This causes an almost never-ending chain of dependencies to be included into consideration. APT juggles it all pretty well, and sometimes it even applies force (read: the --force-* command line options for dpkg :-) to get them all in place. It mostly works out flawlessly.

If you have deb-src statements in your sources.list file, apt-get source packagename will retrieve that source package, including the original tarball, the Debian diffs and the dsc file used by dpkg-source. Add the -b option to start building the package instantly after download.

Running apt-get build-dep packagename will get and install that source package's build dependencies, i.e. the packages that need to be installed for our package to be built properly.

apt-get remove packagename will remove the package (i.e. run dpkg --remove on it). If there are other packages on the system that depend on it, apt-get will display the list and ask for confirmation in order to remove them, too. If you add --purge to the command, the packages will be purged (i.e. dpkg --purge will be done).

apt-cache is used to get all sorts of data out of the APT database. For example, you can display which packages have unmet dependencies, or display reverse dependencies of a particular package, or export the whole database back into the format used by dpkg.

apt-cdrom is used for handling CD sets. It's smart enough to tell you which CD to insert after you request the installation of a package, and it also conveniently mounts/unmounts the CD.

Also worth mentioning is the APT dselect method, which integrates it with dselect.

The only major APT flaw currently is lack of endured and enhanced frontends (yes, there can be frontends to a frontend :-), which would overcome apt-get's deficiencies in handling Recommends and Suggests dependencies as well as a lack of an easy-to-use interface for package selection. There are several tools being developed to address this problem, like deity, aptitude, Red Carpet and synaptic, to name a few popular ones.

APT was written in 1998 by a group of Debian developers, led by Jason Gunthorpe. The software still has a low version number, 0.5.x at the moment, but it's considered stable enough to be the official Debian upgrading tool.

APT has also been ported to RPM by Conectiva, but the word has it it doesn't work as smooth as it does on Debian.