"APT" and this document are free software; you can redistribute them and/or modify them under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
For more details, on Debian GNU/Linux systems, see the file /usr/share/common-licenses/GPL for the full license.
The APT package currently contains two sections, the APT
The Debian packaging system has a large amount of information associated with
each package to help assure that it integrates cleanly and easily into
the system. The most prominent of its features is the dependency system.
The dependency system allows individual programs to make use of shared
elements in the system such as libraries. It simplifies placing infrequently
used portions of a program in separate packages to reduce the
number of things the average user is required to install. Also, it allows
for choices in mail transport agents, X servers and
so on.
The first step to understanding the dependency system is to grasp the concept
of a simple dependency. The meaning of a simple dependency is that a package
requires another package to be installed at the same time to work properly.
For instance, mailcrypt is an emacs extension that aids in encrypting email
with GPG. Without GPGP installed mail-crypt is useless, so mailcrypt has a
simple dependency on GPG. Also, because it is an emacs extension it has a
simple dependency on emacs, without emacs it is completely useless.
The other important dependency to understand is a conflicting dependency. It
means that a package, when installed with another package, will not work and
may possibly be extremely harmful to the system. As an example consider a
mail transport agent such as sendmail, exim or qmail. It is not possible
to have two mail transport agents installed because both need to listen to
the network to receive mail. Attempting to install two will seriously
damage the system so all mail transport agents have a conflicting dependency
with all other mail transport agents.
As an added complication there is the possibility for a package to pretend
to be another package. Consider that exim and sendmail for many intents are
identical, they both deliver mail and understand a common interface. Hence,
the package system has a way for them to declare that they are both
mail-transport-agents. So, exim and sendmail both declare that they provide a
mail-transport-agent and other packages that need a mail transport agent
depend on mail-transport-agent. This can add a great deal of confusion when
trying to manually fix packages.
At any given time a single dependency may be met by packages that are already
installed or it may not be. APT attempts to help resolve dependency issues
by providing a number of automatic algorithms that help in selecting packages
for installation.
The first
Once updated there are several commands that can be used:
It is important to closely look at what dist-upgrade is going to do, its
decisions may sometimes be quite surprising.
The APT
To enable the APT method you need to to select [A]ccess in
The Sources> setup starts by asking for the base of the Debian
archive, defaulting to a HTTP mirror. Next it asks for the distribution to
get.
The distribution refers to the Debian version in the archive, stable>
refers to the latest released version and unstable> refers to the
developmental version. non-US> is only available on some mirrors and
refers to packages that contain encryption technology or other things that
cannot be exported from the United States. Importing these packages into the
US is legal however.
The components list refers to the list of sub distributions to fetch. The
distribution is split up based on software licenses, main being DFSG free
packages while contrib and non-free contain things that have various
restrictions placed on their use and distribution.
Any number of sources can be added, the setup script will continue to
prompt until you have specified all that you want.
Before starting to use
You can then go on and make your selections using [S]elect and then
perform the installation using [I]nstall. When using the APT method
the [C]onfig and [R]emove commands have no meaning, the [I]nstall command
performs both of them together.
By default APT will automatically remove the package (.deb) files once they have been
successfully installed. To change this behavior place Dselect::clean
"prompt";> in /etc/apt/apt.conf.
Both that APT
Before all operations except update, APT performs a number of actions to
prepare its internal state. It also does some checks of the system's state.
At any time these operations can be performed by running apt-get check>.
The first thing it does is read all the package files into memory. APT
uses a caching scheme so this operation will be faster the second time it
is run. If some of the package files are not found then they will be ignored
and a warning will be printed when apt-get exits.
The final operation performs a detailed analysis of the system's dependencies.
It checks every dependency of every installed or unpacked package and considers
if it is OK. Should this find a problem then a report will be printed out and
In this example the system has many problems, including a serious problem
with libreadlineg2. For each package that has unmet dependencies a line
is printed out indicating the package with the problem and the dependencies
that are unmet. A short explanation of why the package has a dependency
problem is also included.
There are two ways a system can get into a broken state like this. The
first is caused by
The second situation is much less serious than the first because APT places
certain constraints on the order that packages are installed. In both cases
supplying the -f> option to
However, if the -f> option is used to correct a seriously broken system
caused by the first case then it is possible that it will either fail
immediately or the installation sequence will fail. In either case it is
necessary to manually use dpkg (possibly with forcing options) to correct
the situation enough to allow APT to proceed.
Before proceeding
The Extra Package list shows all of the packages that will be installed
or upgraded in excess of the ones mentioned on the command line. It is
only generated for an install> command. The listed packages are
often the result of an Auto Install.
The Packages to Remove list shows all of the packages that will be
removed from the system. It can be shown for any of the operations and
should be given a careful inspection to ensure nothing important is to
be taken off. The -f> option is especially good at generating packages
to remove so extreme care should be used in that case. The list may contain
packages that are going to be removed because they are only
partially installed, possibly due to an aborted installation.
The New Packages list is simply a reminder of what will happen. The packages
listed are not presently installed in the system but will be when APT is done.
Whenever the whole system is being upgraded there is the possibility that
new versions of packages cannot be installed because they require new things
or conflict with already installed things. In this case the package will
appear in the Kept Back list. The best way to convince packages listed
there to install is with apt-get install> or by using
Sometimes you can ask APT to install a package that is on hold, in such a
case it prints out a warning that the held package is going to be
changed. This should only happen during dist-upgrade or install.
Finally, APT will print out a summary of all the changes that will occur.
The first line of the summary simply is a reduced version of all of the
lists and includes the number of upgrades - that is packages already
installed that have new versions available. The second line indicates the
number of poorly configured packages, possibly the result of an aborted
installation. The final line shows the space requirements that the
installation needs. The first pair of numbers refer to the size of
the archive files. The first number indicates the number of bytes that
must be fetched from remote locations and the second indicates the
total size of all the archives required. The next number indicates the
size difference between the presently installed packages and the newly
installed packages. It is roughly equivalent to the space required in
/usr after everything is done. If a large number of packages are being
removed then the value may indicate the amount of space that will be
freed.
Some other reports can be generated by using the -u option to show packages
to upgrade, they are similar to the previous examples.
During the download of archives and package files APT prints out a series of
status messages.
The lines starting with Get> are printed out when APT begins to fetch
a file while the last line indicates the progress of the download. The first
percent value on the progress line indicates the total percent done of all
files. Unfortunately since the size of the Package files is unknown
apt-get update> estimates the percent done which causes some
inaccuracies.
The next section of the status line is repeated once for each download thread
and indicates the operation being performed and some useful information
about what is happening. Sometimes this section will simply read Forking>
which means the OS is loading the download module. The first word after the [
is the fetch number as shown on the history lines. The next word
is the short form name of the object being downloaded. For archives it will
contain the name of the package that is being fetched.
Inside of the single quote is an informative string indicating the progress
of the negotiation phase of the download. Typically it progresses from
Connecting> to Waiting for file> to Downloading> or
Resuming>. The final value is the number of bytes downloaded from the
remote site. Once the download begins this is represented as 102/10.2k>
indicating that 102 bytes have been fetched and 10.2 kilobytes is expected.
The total size is always shown in 4 figure notation to preserve space. After
the size display is a percent meter for the file itself.
The second last element is the instantaneous average speed. This values is
updated every 5 seconds and reflects the rate of data transfer for that
period. Finally is shown the estimated transfer time. This is updated
regularly and reflects the time to complete everything at the shown
transfer rate.
The status display updates every half second to provide a constant feedback
on the download progress while the Get lines scroll back whenever a new
file is started. Since the status display is constantly updated it is
unsuitable for logging to a file, use the -q> option to remove the
status display.
APT uses