aptitude">
apt'>
dselect'>
apt-get'>
root'>
gActionsInstall/remove packages">
uActionsUpdate package list">
ActionsCancel pending actions">
fActionsForget new packages">
ActionsClean package cache">
ActionsClean obsolete files">
UActionsMark Upgradable">
ActionsPlay Minesweeper">
ActionsBecome root">
QActionsQuit">
ControluUndoUndo">
+PackageInstall">
-PackageRemove">
_PackagePurge">
:PackageKeep">
=PackageHold">
MPackageMark Auto">
mPackageMark Manual">
FPackageForbid Version">
enterPackageInformation">
iPackageCycle Information">
CpackageChangelog">
eResolverExamine Solution">
!ResolverApply Solution">
.ResolverNext Solution">
,ResolverPrevious Solution">
<ResolverFirst Solution">
>ResolverLast Solution">
rResolverToggle Rejected">
aResolverToggle Approved">
EnterResolverView Target">
ResolverReject Breaking Holds">
/SearchFind">
\SearchFind Backwards">
nSearchFind Again">
NSearchFind Again Backwards">
lSearchLimit Display">
SearchUn-Limit Display">
bSearchFind Broken">
OptionsPreferences">
OptionsRevert options">
F6ViewsNext">
F7ViewsPrev">
qViewsClose">
ViewsNew Package View">
ViewsAudit Recommendations">
ViewsNew Flat Package List">
ViewsNew Debtags Browser">
ViewsNew Categorical Browser">
HelpAbout">
?HelpHelp">
HelpUser's Manual">
HelpFAQ">
HelpChangeLog">
HelpLicense">
?=">
?not">
?and">
?or">
?action">
?all-versions">
?any-version">
?architecture">
?archive">
?automatic">
?bind">
?broken">
?broken-depType">
?broken-depType">
?broken-reverse-depType">
?conflicts">
?config-files">
?depType">
?depends">
?recommends">
?suggests">
?description">
?essential">
?exact-name">
?false">
?for">
?garbage">
?installed">
?maintainer">
?multiarch">
?narrow">
?name">
?new">
?obsolete">
?origin">
?provides">
?priority">
?reverse-depType">
?reverse-depends">
?reverse-recommends">
?reverse-suggests">
?reverse-broken-depType">
?section">
?source-package">
?source-version">
?tag">
?term">
?term-prefix">
?true">
?task">
?upgradable">
?user-tag">
?version">
?virtual">
?widen">
]>
&aptitude; user's manualVersion &VERSION;DanielBurrowsdburrows@debian.org2004-2008Daniel Burrows
This manual is free software; you can redistribute it and/or
modify it 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.
This manual is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this manual; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA
Introduction
JohnFouhyMaster, does Emacs possess the Buddha nature? the
novice asked.
I don't see why not, replied the master.
It's got bloody well everything else. Several
years later, the novice suddenly achieved enlightenment.
Hello, and welcome to the &aptitude; user's manual! This
introductory section explains what &aptitude; is and how to get
your hands on it; for information on actually using it, please
proceed to .
What is this aptitude thing, anyway?
&aptitude; is a featureful package manager for Debian GNU/Linux
systems, based on the renowned &apt; package management
infrastructure. &aptitude; provides the functionality of
&dselect; and &apt-get;, as well as many additional features not
found in either program.
What is a package manager?
A package manager keeps track of what
software is installed on your computer, and allows you to easily
install new software, upgrade software to newer versions, or
remove software that you previously installed. As the name
suggests, package managers deal with
packages: collections of files that are
bundled together and can be installed and removed as a group.
Often, a package is just a particular program. For instance,
the instant messaging client gaim is
contained in the Debian package of the same name. On the other
hand, it is common for programs to consist of several
interrelated packages. For instance, the
gimp image editor consists not only of the
gimp package, but also of the
gimp-data package; in addition, several
optional add-on packages (containing esoteric data,
documentation, and so on) are also available. It is also
possible for several small, related programs to be contained in
a single package: for instance, the
fileutils package contains several
common Unix commands, such as ls,
cp, etc.
Some packages require other packages in order to function. In
Debian, packages can depend upon,
recommend,
suggest,
break, or
conflict with other packages.
If a package A depends upon another package B, then B is
required for A to operate properly. For instance, the
gimp package depends upon the
gimp-data package in order to
ensure that the GIMP graphics editor can
access its critical data files.
If a package A recommends another package B, then B provides
important additional functionality to A that will be desired
in most circumstances. For instance, the
mozilla-browser package recommends
the mozilla-psm package, which adds
support for secure data transfers to the Mozilla Web browser.
While mozilla-psm is not strictly
required for Mozilla to function, most users will want
Mozilla to support the secure transmission of confidential
data (such as credit card numbers).
If a package A suggests another package B, then package B
provides functionality that may enhance A, but is not needed
in most cases. For instance, the
kmail package suggests the
gnupg package, which contains
encryption software that can be used by KMail.
If a package A conflicts with another package B, then the
two packages cannot be installed at the same time. For
instance, fb-music-hi conflicts
with fb-music-low because they
provide alternate sets of music for the game Frozen Bubble.
The job of a package manager is to present an interface which
assists the user in managing the collection of packages
installed on his or her system. &aptitude; provides such an
interface by building on the &apt; package management system.
What is the &apt; system?
Being able to install and remove packages is great, but the
basic software for doing this (known as
dpkg) does exactly that and nothing
more. This is fine if you download one or two packages by
hand, but quickly becomes cumbersome when you are trying to
manage a large number of packages. Furthermore, if your shiny
new package requires software you haven't yet installed, you
have to download the newly required software by hand. And if
you later decide to remove the no-longer-shiny package, these
extra packages will linger on your system, consuming hard
drive space, unless you manually remove them.
Obviously, all of this manual labor is a tedious chore, and so
most package management systems come with software which takes
care of some or all of it for you. &apt; is a common base on
which to build these programs: in addition to &aptitude;,
programs such as synaptic and
apt-watch make use of &apt;.
&apt; works by keeping a list of the packages that can be
downloaded from Debian on your computer. This list is used to
find packages that need to be upgraded and to install new
packages. &apt; can also solve many dependency problems
automatically: for instance, when you choose to install a
package, it will find any additional required packages and
install those as well.
When working with a package manager based on &apt;, such as
&aptitude;, you will typically perform three basic tasks: you
will update the list of packages that
are available by downloading new lists from the Debian
servers, you will select which packages
should be installed, upgraded, or removed, and finally, you
will commit your selections by actually
performing the installations, removals, etc.
&apt;-based package managers read the list of sources --
repositories of Debian packages -- from the file
/etc/apt/sources.list. The format and
contents of this file are beyond the scope of this document,
but are described in the manual page
sources.list(5).
How can I get &aptitude;?
In case you are reading this manual but &aptitude; is not yet
installed on your system, this section explains how to correct
this unfortunate situation. Most people should head straight
for the section on binary
packages.
Pre-built &aptitude; packages, or, what 99% of users should do
Pre-built, or binary packages are the easiest and most
common way to install &aptitude;. You should only attempt a
source install if
binary packages are not available for some reason, or if you
have unusual needs that are not met by binary packages.
If you are using a Debian system, execute the following
command as &root;: apt-get install
aptitude. If you are not using a Debian system,
your system provider might have created a pre-built package
of &aptitude;; if you are not sure, you can contact them for
further suggestions.
Building &aptitude; from source code
You also can build &aptitude; from source; however, this is
probably not a useful exercise unless &apt; is already
available on your system. If it is, you can install
&aptitude; from source with the following steps:
Install the following pieces of software:
A C++ compiler, such as g++.
The development files for &apt;, typically available
in a package with a name like
libapt-pkg-dev.
The libsigc++-2.0 library,
available in the package
libsigc++-2.0-dev or from
.
The cwidget library,
available in the package
libcwidget-dev or from
.
The gettext program, which
should be included with your Linux distribution.
A make tool, such as GNU
make.
Last but not least, download the most recent
&aptitude; source code, available from .
(scroll to the bottom of the page and download the
.orig.tar.gz file)
Once all the required components are available, open a
terminal and execute the command tar zxf
aptitude-&VERSION;.tar.gz to unpack the source
code. Once the source code is unpacked, type cd
aptitude-&VERSION; && ./configure &&
make to compile &aptitude;. If this succeeds,
make sure you are the &root; user (by using
su, for instance), then type
make install to install &aptitude; on
your computer. Once &aptitude; is successfully installed,
typing aptitude at a command prompt
should start the program.
Tracking and participating in &aptitude; developmentGetting the &aptitude; development source tree
If you want to test the latest bleeding-edge source code
for &aptitude;, you can download unreleased &aptitude;
source code using Git. Install Git (available
from ) and
execute the command git clone
git://git.debian.org/git/aptitude/aptitude.git
to retrieve the most recent source code.
The &aptitude; Git repository is an active
development tree; it will change as bugs are fixed and
features are added, and there is absolutely no guarantee
that it will even compile, let alone run properly! Bug
reports are welcome, but be aware that you use
development code entirely at your own
risk!Of course, all free software is
used at your own risk, but the risk involved in using an
active development tree is much
higher.Mailing list
The primary mailing list for &aptitude; development is
aptitude-devel@lists.alioth.debian.org.
Archives of the list are located at .
To subscribe, visit the Web page .
Submitting patches
Ideally, patches should be submitted to the &aptitude;
mailing list,
aptitude-devel@lists.alioth.debian.org.
But if you prefer sending them by private email, you may
email them to aptitude@packages.debian.org
or dburrows@debian.org. A brief
description of the motivation behind your patch, and an
explanation of how it works, are greatly appreciated.
Tracking changes to the &aptitude; source tree
The &aptitude; source tree is regularly updated with new
features, bugfixes, and new bugs. Once the source code is
available on your computer (see the previous section), you
can cd into it and type git
pull to update it with any changes made to the
main repository.
To automatically receive notifications when changes are
made to the &aptitude; codebase, subscribe to the Atom feed
available at
or RSS feed available at .
Building &aptitude; from the development tree
To build &aptitude; from the Git repository, you must
have the programs autoconf and
automake installed. Type
sh ./autogen.sh && ./configure
to generate the files needed to compile &aptitude;, then
execute make and make
install.
Getting started
LaoTsu
A journey of a thousand miles must begin with a single step.
&aptitude; is a sizeable program with many features, and it can
be a bit overwhelming for new users to get acquainted with it.
This chapter does not exhaustively describe the features of
&aptitude; (see for that), but it
does provide a walk-through of the basic and most commonly used
features of the program.
Using &aptitude;
This section describes how to use the visual interface of
&aptitude;. For information on using &aptitude;'s
command-line interface, see .
&aptitude; basics
To run &aptitude;, open your favorite text terminal, and at
the command line, type:
foobar$aptitude
Once the cache is loaded (this may take some time on slower
machines), the main &aptitude; screen should appear:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.2.14.1
--- Installed Packages
--- Not Installed Packages
--- Obsolete and Locally Created Packages
--- Virtual Packages
--- Tasks
These packages are currently installed on your computer.
As you can see, the main screen of &aptitude; is divided
into several regions. The blue line at the top of the
terminal is the menu bar, and the blue lines below it are
informational messages describing some important commands.
The black space that follows is the list of all available
packages, in which some groups of packages are listed. The
currently selected group (Installed Packages) is
highlighted, and its description is shown in the lower black
space.
As the top line of the screen suggests, you can access
&aptitude;'s menus by pressing Controlt; you can
also click the mouse on a menu title if your system supports
it. Pressing Controlt will open the Actions menu:
Actions Undo Package Search Options Views Help
+-------------------------+ u: Update g: Download/Install/Remove Pkgs
|Install/remove packages g|
|Update package list u|
|Forget new packages f|
|Clean package cache |eated Packages
|Clean obsolete files |
|Mark Upgradable U|
|Play Minesweeper |
|Become root |
+-------------------------+
|Quit Q|
+-------------------------+
These packages are currently installed on your computer.
Perform all pending installs and removals
Use the arrow keys and Enter to select menu
items (or, if your system supports it, click on them with a
mouse); to close the menu without selecting anything, press
Controlt again. The currently highlighted menu
item is explained at the bottom of the screen. If a menu
item can be activated using a keyboard shortcut, the
shortcut is displayed in the menu: for instance, the command
Update package list can be activated by pressing
u.
At any time, you can press ? to display an
on-line reference to the available keyboard shortcuts.
Navigating the &aptitude; package list
The list of packages is the primary interface to &aptitude;.
When &aptitude; starts, the list is organized into a number
of groups, as can be seen in the following screen shot:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.2.14.1
--- Installed Packages
--- Not Installed Packages
--- Obsolete and Locally Created Packages
--- Virtual Packages
--- Tasks
These packages are currently installed on your computer.
Empty groups of packages are automatically hidden by
&aptitude;, so you may see more or less groups than appear
in this screen shot.
In the screen shot above, the first group (Installed
Packages) is highlighted to indicate that it is
currently selected. You can move the selection up and down
with the arrow keys; note that the description below the
package list changes as you do so. To expand
a group, press Enter while the group is
selected:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.2.14.1
--\ Installed Packages
--- admin - Administrative utilities (install software, manage users, etc)
--- base - The Debian base system
--- devel - Utilities and programs for software development
--- doc - Documentation and specialized programs for viewing documentation
--- editors - Text editors and word processors
--- electronics - Programs for working with circuits and electronics
--- games - Games, toys, and fun programs
--- gnome - The GNOME Desktop System
--- graphics - Utilities to create, view, and edit graphics files
These packages are currently installed on your computer.
As you can see, the Installed Packages group has been
expanded to reveal its contents: it contains a number of
subgroups, loosely defined by what types of software they
contain. Expanding the admin section by selecting it and
pressing Enter, we see:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.2.14.1
--\ Installed Packages
--\ admin - Administrative utilities (install software, manage users, etc)
--- main - The main Debian archive
--- base - The Debian base system
--- devel - Utilities and programs for software development
--- doc - Documentation and specialized programs for viewing documentation
--- editors - Text editors and word processors
--- electronics - Programs for working with circuits and electronics
--- games - Games, toys, and fun programs
--- gnome - The GNOME Desktop System
Packages in the 'admin' section allow you to perform administrative tasks such
as installing software, managing users, configuring and monitoring your system,
examining network traffic, and so on.
The admin group contains a single subgroup, the main
Debian archive. Expanding this group reveals some packages!
To save time, you can use the [ key to
expand all the subgroups of a group at once. Selecting
Installed Packages and pressing [ would
have immediately revealed the packages in the screenshot
below.
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.2.14.1
--\ Installed Packages
--\ admin - Administrative utilities (install software, manage users, etc)
--\ main - The main Debian archive
i acpid 1.0.3-19 1.0.3-19
i alien 8.44 8.44
i anacron 2.3-9 2.3-9
i apt-show-versions 0.07 0.07
i A apt-utils 0.5.25 0.5.25
i apt-watch 0.3.2-2 0.3.2-2
i aptitude 0.2.14.1-2 0.2.14.1-2
The Debian distribution consists of packages from the 'main' section. Every
package in 'main' is Free Software.
For more information about what Debian considers to be Free Software, see
http://www.debian.org/social_contract#guidelines
In addition to the arrow keys, you can move the selection
through the package list by a page of information at a time
using the Page Up and Page
Down keys.
When there is more information in the lower half of the
display than fits into the available space, the
a and z keys can be used
to scroll through it.
Finding packages by name
To quickly find a package whose name you know, press
/ to open a search dialog:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.2.14.1
i frozen-bubble 1.0.0-5 1.0.0-5
i A frozen-bubble-data 1.0.0-5 1.0.0-5
i geekcode 1.7.3-1 1.7.3-1
i gfpoken 0.25-3 0.25-3
i ggz-gnome-client 0.0.7-2 0.0.7-2
i ggz-gtk-client 0.0.7-1 0.0.7-1
i ggz-gtk-game-data 0.0.7-2 0.0.7-2
i +--------------------------------------------------------------------------+
i |Search for: |
i |froz |
Po| [ Ok ] [ Cancel ]|
Fr+--------------------------------------------------------------------------+
attempt to shoot bubbles into groups of the same color to cause them to pop. It
features 100 single-player levels, a two-player mode, music and striking
graphics.
This game is widely rumored to be responsible for delaying the Woody release.
URL: http://www.frozen-bubble.org/
As you can see in the above screen shot, a search for
froz finds the
frozen-bubble package. Using
&aptitude;'s powerful search language, described in , it is possible to find
packages based on many complex criteria.
You can search backwards in the package list by pressing
\, and you can repeat the last search by
pressing n after closing the search
window.
Sometimes it is useful to hide all packages except those
which meet some particular criterion. To do this, press
l:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.2.14.1
--- Installed Packages
--- Not Installed Packages
--- Obsolete and Locally Created Packages
--- Virtual Packages
--- Tasks
+--------------------------------------------------------------------------+
|Enter the new package tree limit: |
|apti |
| [ Ok ] [ Cancel ]|
Th+--------------------------------------------------------------------------+ a
This dialog works exactly like the search dialog, except
that instead of highlighting the next package that matches
what you typed into the dialog box, it hides all packages
which don't match. For instance, typing
apti into this dialog box and
pressing Enter will hide all packages
except those whose names contain apti:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.2.14.1
--\ Installed Packages
--\ admin - Administrative utilities (install software, manage users, etc)
--\ main - The main Debian archive
i aptitude 0.2.14.1-2 0.2.14.1-2
i A synaptic 0.51-1 0.51-1
--\ x11 - The X window system and related software
--\ main - The main Debian archive
i xfree86-driver-synaptics 0.13.3-1 0.13.3-1
--- Not Installed Packages
--- Virtual Packages
These packages are currently installed on your computer.
Managing packages
Now that you can move about the list of packages, it's time
to start using &aptitude; to install and remove packages.
In this section you will learn how to flag packages for
installation, deletion, and upgrade.
You can only change your system's setup as the &root;
user. If you want to experiment with &aptitude;, you can
safely run it as any user other than &root; without
damaging your system in any way. &aptitude; will tell you
when you try to do something that only &root; can do, and
if you want to continue, you must type &root;'s password.
All changes to a package are performed by first highlighting
it in the package list, then pressing a key corresponding to
the action which should be performed. The basic action keys
You can also change packages using the
Package menu; see for details.
are + to install or upgrade a package,
- to remove a package, and
= to prevent a package from being
automatically upgraded (this is known as
holding the package). These actions
are not performed immediately; &aptitude; will simply
update the package list to show the change that has been
requested.
For instance, in the screen shot below, the
kaffeine-mozilla package was selected and
+ was pushed. The package is now
highlighted in green and the letter i has
appeared to the left of its name, to indicate that it will
be installed; in addition, an estimate of the amount of
space that the package will use is displayed.
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.2.14.1 Will use 2925kB of disk space DL Size: 1375kB
--\ kde - The KDE Desktop System
--\ main - The main Debian archive
p bibletime-i18n <none> 1.4.1-1
p education-desktop-kde <none> 0.771
p junior-kde <none> 1.4
piA kaffeine +2843kB <none> 0.4.3-1
pi kaffeine-mozilla +81.9kB <none> 0.4.3-1
p karamba <none> 0.17-5
p kde-devel <none> 4:3.1.2
p kde-devel-extras <none> 4:3.1.2
The K Desktop Environment (development files)
A metapackage containing dependencies for the core development suite of KDE
including kdesdk, qt3-designer, and all core KDE -dev packages.
At any time, you can use &undo-undo; to
undo any change to one or more packages.
This is very useful if an action has unforeseen
consequences and you want to take it back.
In addition to actions that affect individual packages,
another important action is available: typing
U will attempt to upgrade any packages that
can be upgraded. You should use this command on a regular
basis to keep your system up-to-date.
Managing broken packages
Sometimes, changing a package's state will cause
dependency relationships to become unfulfilled; packages
with unfulfilled dependencies are said to be
broken. &aptitude; will warn you
when this happens, and explain why it occured. For
instance, here is what happens if I attempt to remove
sound-juicer:
Actions Undo Package Resolver Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.3.3 #Broken: 1 Will free 48.6MB of disk space
i A nautilus 2.10.1-4 2.10.1-4
i nautilus-cd-burner 2.10.2-1.1 2.10.2-1.1
i A nautilus-data 2.10.1-4 2.10.1-4
i netspeed 0.12.1-1 0.12.1-1
i A oaf 0.6.10-3 0.6.10-3
i pybliographer 1.2.6.2-1 1.2.6.2-1
i rhythmbox 0.8.8-13 0.8.8-13
i shermans-aquarium 3.0.1-1 3.0.1-1
idA sound-juicer -1733kB 2.10.1-3 2.10.1-3
GNOME 2 CD Ripper
sound-juicer will be removed.
The following packages depend on sound-juicer and will be broken by its
removal:
* gnome-desktop-environment depends on sound-juicer
[1(1)/...] Suggest 2 keeps
e: Examine !: Apply .: Next ,: Previous
As you can see, &aptitude; displays three indicators that
something has gone wrong: first, the number of broken
packages is displayed in the upper blue area; second, the
lower half of the display changes to describe broken
packages that are related to the currently highlighted
package; third, a bar appears at the bottom of the screen
with a suggestion on how to solve the problem. To quickly
find broken packages in the package list, you can press
b or search for &Sbroken;.
The text [1(1)/...] indicates the
progress of &aptitude;'s dependency resolver. The first
number is the solution that you have currently selected,
and the second one is the number of solutions that
&aptitude; has already generated. The presence of the
text ... indicates
that there may be additional solutions beyond the ones
generated; if &aptitude; knew for certain that it had
generated the only possible solution, this indicator
would read [1/1].
To see more information about how &aptitude; thinks you
can solve this problem, press e. A
screen similar to the following will appear:
Actions Undo Package Resolver Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Packages Resolve Dependencies
--\ Keep the following packages at their current version:
gstreamer0.8-cdparanoia [0.8.10-1 (unstable, now)]
sound-juicer [2.10.1-2 (now)]
[1(1)/...] Suggest 2 keeps
e: Examine !: Apply .: Next ,: Previous
From here, you can see more solutions by pressing
. or return to solutions that you
previously examined by pressing ,. To
apply the current solution and return to the package list,
press !. For instance, pressing
. while the above screen is displayed
results in the following solution being presented:
Actions Undo Package Resolver Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Packages Resolve Dependencies
--\ Keep the following packages at their current version:
sound-juicer [2.10.1-3 (unstable, now)]
--\ Downgrade the following packages:
gstreamer0.8-cdparanoia [0.8.11-1 unstable, now -> 0.8.8-3 testing]
[2(2)/...] Suggest 1 keep,1 downgrade
e: Examine !: Apply .: Next ,: Previous
In addition to the basic solution navigation commands, you
can press r to reject
actions of which you disapprove. For instance, the first
solution will cancel the removal of
sound-juicer -- the very action
we were trying to perform! By pressing r
on the item corresponding to this action, we can tell
&aptitude; that it should not cancel the removal of
sound-juicer in this way.
Actions Undo Package Resolver Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Packages Resolve Dependencies
--\ Keep the following packages at their current version:
gstreamer0.8-cdparanoia [0.8.11-1 (unstable, now)]
R sound-juicer [2.10.1-3 (unstable, now)]
GNOME 2 CD Ripper
gnome-desktop-environment depends upon sound-juicer
--\ The following actions will resolve this dependency:
-> Remove gnome-desktop-environment [1:2.10.2.3 (unstable, testing, now)]
R -> Cancel the removal of sound-juicer
-> Downgrade sound-juicer [2.10.1-3 (unstable, now) -> 0.6.1-2 (testing)]
[1(1)/...] Suggest 2 keeps
e: Examine !: Apply .: Next ,: Previous
As you can see, the list item corresponding to keeping
sound-juicer at its current
version has turned red and been marked with an
R, indicating that it has been rejected.
Solutions that you generate in the future (that is, any
solution that you have not yet viewed) will not include
this action, although solutions that were already
generated and contain this action will be available.
In the above screen image, a description of
sound-juicer is displayed in
the middle of the screen; below it, you can see the
dependency that caused sound-juicer to
be kept at its current version, along with all the ways to
resolve this dependency that &aptitude; knows about.
For instance, if this rejection is imposed immediately
after attempting to remove sound-juicer,
pressing . retrieves the following
solution, skipping the solution that
cancels the installation of sound-juicer
and downgrades gstreamer0.8-cdparanoia.
Actions Undo Package Resolver Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Packages Resolve Dependencies
--\ Remove the following packages:
gnome-desktop-environment [1:2.10.2.3 (unstable, testing, now)]
[2(2)/...] Suggest 1 removal
e: Examine !: Apply .: Next ,: Previous
Rejections are only applied to newly generated solutions:
that is, solutions that are generated when you press
. while viewing the last generated
solution. Previously generated solutions can still
contain rejections. You can cancel a rejection at any
time by once again selecting the rejected action and
pressing r; this will permit solutions
containing the action to be generated again, including any
solutions that were previously skipped.
The opposite of rejecting an action is approving it. To
approve an action, just select it and press
a; this forces the problem resolver to
choose the action whenever possible
Approving an action is slightly different from requiring
all solutions to contain the action; what it means is
that given a choice between an approved action and a
non-approved action, the resolver will always pick the
approved action. If there are several possible approved
actions, all of them will be candidates to be placed
into the solution.
. Approved actions will turn green and will be
marked with A, as in the following
screenshot:
Actions Undo Package Resolver Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Packages Resolve Dependencies
--\ Remove the following packages:
A gnome-desktop-environment [1:2.10.2.3 (unstable, testing, now)]
[2(2)/...] Suggest 1 removal
e: Examine !: Apply .: Next ,: Previous
If you do not resolve any broken dependencies,
&aptitude; will automatically implement its current
suggestion when you commit your selections by pressing
g. However, it is hard to
automatically solve dependency problems, and you may not
be happy with the results, so it is generally better to
look at what &aptitude; plans to do
before committing your selections.
Updating the package list and installing packages
At this point, you know enough about &aptitude; to actually
make modifications to your system.
You should periodically update your list of available
packages from the Debian servers, to keep track of new
packages and new versions of packages. To do this, press
u. At any time during the download, you
can press q to abort it.
Once you have fresh lists of packages, you can choose the
packages to upgrade, install, or remove as described in the
previous section. To review the actions you have requested,
press g once. When installing the
kaffeine-mozilla package (from the
previous example), the following screen appears:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.2.14.1 Will use 2925kB of disk space DL Size: 1375kB
--\ Packages being automatically installed to satisfy dependencies
piA kaffeine +2843kB <none> 0.4.3-1
--\ Packages to be installed
pi kaffeine-mozilla +81.9kB <none> 0.4.3-1
These packages are being installed because they are required by another package
you have chosen for installation.
If you select a package, an explanation of its current state will appear in this
space.
As you can see, &aptitude; automatically decided to install
kaffeine for me because
kaffeine-mozilla requires it. At
this point, I have the choice of either continuing with the
installation by pressing g, or aborting it
by pressing q.
Using &aptitude; from the command line
In addition to its visual interface described in the
previous section, &aptitude; can be used to manage packages
directly from the command-line in the same way that you would
use &apt-get;. This section covers the most common &aptitude;
command-line actions; for more information, see the &aptitude; command-line reference.
In general, a command-line invocation of &aptitude; will look
like this:
aptitudeactionargumentsaction tells &aptitude; what action
it is to take; the remaining arguments are used in an
option-specific fashion. Typically they will consist of
package names and command-line switchesA
switch is a letter preceded by a hyphen: for instance, -a,
-v, etc..
The most important actions are:
aptitudeupdate
This command updates the package lists, as if you had
entered the visual interface and pressed
u.
aptitudesafe-upgrade
This command will upgrade as many packages as it can
upgrade without removing existing packages.
It is sometimes necessary to remove one package in order
to upgrade another; this command is not able to upgrade
packages in such situations. Use the full-upgrade
command to upgrade those packages as well.
aptitudefull-upgrade
Like safe-upgrade,
this command will attempt to upgrade packages, but it is
more aggressive about solving dependency problems: it
will install and remove packages until all dependencies
are satisfied. Because of the nature of this command,
it is possible that it will do undesirable things, and
so you should be careful when using it.
For historical reasons, this command was originally
named dist-upgrade, and that name
is still recognized by &aptitude;.
aptitudeinstallremovepurgepkg1pkg2
These commands install, remove, or
purgePurging a package removes the
package, as well as all its configuration
files. the specified packages.
Installing a package which is already installed but
can be upgraded will cause it to be upgraded.
aptitudesearchpattern1pattern2
This command searches for packages whose name contains
any of the given patterns,
printing the result to the terminal. In addition to
just being a string of text, each
pattern can be a search
pattern as described in .
In fact, the same is true of the commands that take
packages as arguments, such as
install or
show.
For instance, aptitude
search gnome kde will list all
packages whose name contains either
gnome or
kde.
aptitudeshowpkg1pkg2
Prints information about each
pkg to the terminal.
The commands that install, upgrade, and remove packages all
accept the parameter -s, which stands for simulate. When
-s is passed on the command line, the program performs all
the actions it would normally perform, but does not actually
download or install/remove any files.
&aptitude; will sometimes present a prompt like this:
The following NEW packages will be automatically installed:
space-orbit-common
The following NEW packages will be installed:
space-orbit space-orbit-common
0 packages upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 3200kB of archives. After unpacking 8413kB will be used.
Do you want to continue? [Y/n/?]
In addition to the obvious options of Yes and No, a number
of commands are available which can be used to change the
information displayed at the prompt, or to specify further
actions. For instance, typing s will display or hide
information about how much space each package will use:
Do you want to continue? [Y/n/?]s
Size changes will be shown.
The following NEW packages will be automatically installed:
space-orbit-common <+8020kB>
The following NEW packages will be installed:
space-orbit <+393kB> space-orbit-common <+8020kB>
0 packages upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 3200kB of archives. After unpacking 8413kB will be used.
Do you want to continue? [Y/n/?]
Similarly, typing d will display information about
automatically installed or removed packages:
The following NEW packages will be automatically installed:
space-orbit-common (D: space-orbit)
The following NEW packages will be installed:
space-orbit space-orbit-common
0 packages upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 3200kB of archives. After unpacking 8413kB will be used.
This shows that space-orbit-common is
being installed because space-orbit
depends on it. You can see the entire list of possible
entries by entering ? at the prompt.
If your request violates dependencies in a way that cannot be
trivially resolved, &aptitude; will ask you what to do:
The following packages are BROKEN:
libsdl1.2debian
The following packages will be REMOVED:
libsdl1.2debian-alsa
.
.
.
The following actions will resolve these dependencies:
Install the following packages:
libsdl1.2debian-all [1.2.12-1 (unstable)]
Score is 41
Accept this solution? [Y/n/q/?]
Typing y (or simply pressing
enter) will accept the proposed solution.
Typing n will display the next
best solution:
Accept this solution? [Y/n/q/?]n
The following actions will resolve these dependencies:
Install the following packages:
libsdl1.2debian-esd [1.2.12-1 (unstable)]
Score is 19
Accept this solution? [Y/n/q/?]
As with the main command-line prompt, you can perform a number
of additional actions, including manually altering the states
of packages, from the dependency resolution prompt. Type
? to see a complete list.
Typing q will abort the automatic
resolver and allow you to resolve the dependencies manually:
Accept this solution? [Y/n/q/?]q
aptitude failed to find a solution to these dependencies. You can solve them yourself by hand or type 'n' to quit.
The following packages have unmet dependencies:
libsdl1.2debian: Depends: libsdl1.2debian-alsa (= 1.2.12-1) but it is not installable or
libsdl1.2debian-all (= 1.2.12-1) but it is not installable or
libsdl1.2debian-esd (= 1.2.12-1) but it is not installable or
libsdl1.2debian-arts (= 1.2.12-1) but it is not installable or
libsdl1.2debian-oss (= 1.2.12-1) but it is not installable or
libsdl1.2debian-nas (= 1.2.12-1) but it is not installable or
libsdl1.2debian-pulseaudio (= 1.2.12-1) but it is not installable
Resolve these dependencies by hand? [N/+/-/_/:/?]
You can use any of the package manipulation commands to
resolve the broken dependencies (type ?
for a full list of the available commands). Type
n or press enter to
quit &aptitude;:
Resolve these dependencies by hand? [N/+/-/_/:/?] n
Abort.
For complete documentation of the command-line features of
&aptitude;, see .
&aptitude; reference guide
LewisCarrol,
Alice in Wonderland
The White Rabbit put on his spectacles. 'Where shall I begin,
please your Majesty?' he asked.
'Begin at the beginning,' the King said gravely, 'and go on
till you come to the end: then stop.'
&aptitude; is a large program with many features, and it is
sometimes difficult to remember how to do something, or even to
remember whether that something is even possible. Indeed, many
feature requests received by the author describe features which
are already present but are difficult to find.I
am pleased to say that the number of requests of this sort fell
off precipitously following the initial publication of this
Guide. It would be a happy occurrence if there was a connection
between the two events.
In an attempt to combat this obscurity, this reference guide
describes every feature and configuration parameter of
&aptitude;. For a more gentle guide to the important features
of &aptitude;, see .
&aptitude;'s behavior and appearance can be configured in a
number of ways. This manual describes how the program works
with the default settings; descriptions of how various
settings affect behavior are given in .
The &aptitude; terminal user interface
This section describes the parts of the terminal-based user
interface of &aptitude; that do not deal with managing packages.
Using the menus
The menu bar at the top of the screen lists the most
important commands in &aptitude;. To activate the menu bar,
press Controlt; you can then navigate it using
the arrow keys and select a menu item using
Enter.
Some menu items also have hotkeys: letters or numbers
that can be used to select the item while the menu is
active. These hotkeys are displayed in a brighter shade
of white than the rest of the menu.
In addition, some menu items have shortcuts:
keystrokes that perform the same action as the menu item
while the menu is not active.
These keystrokes are listed on the right-hand side of
the menu.
In the remainder of the manual, menu commands will be
written like this:
keyMenuItem.
This indicates that you should choose
Item from the
Menu menu, and that
key is the shortcut for this
command.
Menu commandsThe Actions menuThe Undo menuThe Package menuThe Resolver menuThe Search menuThe Options menuThe Views menu
For an overview of how views work, see .
The Help menuWorking with multiple views
&aptitude; allows you to work with several views at once.
A view (sometimes called a screen) is simply something
that can appear in the area of the screen below the menu
bar. The most common view is the package list, but download
views are also common.
When several views are open at once, a bar listing all the
active views will appear at the top of the screen. For
instance, if I examine apt by
pressing Enter, then examine
libc6, the screen will look
something like this:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Packages apt info libc6 info
aptitude 0.3.1
i A --\ libc6 2.3.2.ds1- 2.3.2.ds1-
Description: GNU C Library: Shared libraries and Timezone data
Contains the standard libraries that are used by nearly all programs on the
system. This package includes shared versions of the standard C library and
the standard math library, as well as many others. Timezone data is also
included.
Priority: required
Section: base
Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org>
Compressed size: 4901k
Uncompressed size: 15.9M
Source Package: glibc
--\ Depends
--- libdb1-compat
--\ Suggests
--- locales
--- glibc-doc
--\ Conflicts
GNU C Library: Shared libraries and Timezone data
You can close the current view using &views-close;. To
switch to the next or previous view, use &views-next; and
&views-prev;, or click on the view's name at the top of the
screen; you can also find a list of all active views in the
Views menu.
As shown above, some commands (for instance, viewing
information about a package) will create new views
automatically; you can also explicitly create a new view
using &views-new; or &views-browse;.
Becoming &root;
Some actions, such as updating the package lists, can only
be performed as &root;. If you are not &root; and you try
to update the package lists, &aptitude; will ask if you want
to become &root;:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.2.14.1
--- Installed Packages
--- Not Installed Packages
--- Obsolete and Locally Created Packages
--- Virtual Packages
--- Tasks
+-------------------------------------------------------------------------+
|Updating the package lists requires administrative privileges, which |
|you currently do not have. Would you like to change to the root account?|
| |
| [ Become root ] [ Don't become root ] |
Th+-------------------------------------------------------------------------+
If you select Become root, &aptitude; will prompt you for
&root;'s password; when you have correctly entered it,
&aptitude; will perform the action that required &root;
privileges. You will still be &root; after the action
completes.
You can switch to the &root; account at any time using the
command &actions-su;. Any changes you have made to package
states will be preserved (but will not be saved until you
quit &aptitude;).
By default, &aptitude; will use the command
su to gain &root; privileges. If you
would like it to use some other command (such as
sudo), set the configuration option
Aptitude::Get-Root-Command.
Managing packages
This section describes how to manipulate the list of packages,
how to install new packages on your system, and how to remove
old packages.
Managing the package list
To keep the list of packages up-to-date, it is recommended
that you periodically update it. You can do this using the
&actions-update; command.
Accessing package information
Information about packages is presented in several
locations in &aptitude;: the package list gives a quick
overview of the state of each package, and additional
views providing detailed information about a package are
also available.
The package list
The package list displays an at-a-glance synopsis of a
package's state. For instance, the package
webmin might have the
following synopsis:
piAU webmin +5837kB <none> 1.160-2
The four characters on the left-hand side of the
synopsis show that the package is not installed
(p), that it is going to be installed
(i), that it was automatically chosen to
be installed (A), and that it is
untrusted (U). On the right-hand side of
the synopsis, the current version and the most recent
available version are displayed, along with an
indication of how much space will be used by the
upgrade.
You can customize how package synopses are displayed;
see for details.
The four status flags on the left-hand side of the
screen give the basic information about a package's
state. The first character is the package's
current state. The second
character is the action which will
be taken on the package. The third character indicates
whether the package was automatically
installed (see ), and the fourth character
indicates whether the package is trusted (see ).
The possible values of the current state flag are
given in and the
possible values of the action flag are given in .
In addition, &aptitude; will use colors to indicate
package state if your terminal supports it. State
distinctions are mainly displayed using the background
color:
Black
The package cannot be upgraded (or is not going to
be installed), and it has no dependency problems.
If the package is installed, its name will be
highlighted.
Green
The package is going to be installed.
Blue
The package is currently installed, and it will be
upgraded.
Magenta
The package is currently installed, but it will be
removed.
White
The package is currently installed, and it is
held at its current version: automatic upgrades
will ignore it.
Red
This package is broken: some of its dependencies
will not be satisfied.
Finally, the lower half of the screen displays the long
description. &aptitude; will attempt to detect whether
the package is involved in a dependency problem; if so,
information regarding the dependency problem will be
displayed here. To cycle between dependency information
and the package description, press i.
Detailed package information
Pressing Enter while a package is
highlighted will display the package information screen:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.2.14.1
i A --\ apt 0.5.25 0.5.25
Description: Advanced front-end for dpkg
This is Debian's next generation front-end for the dpkg package manager. It
provides the apt-get utility and APT dselect method that provides a simpler,
safer way to install and upgrade packages.
APT features complete installation ordering, multiple source capability and
several other unique features, see the Users Guide in apt-doc.
Essential: yes
Priority: important
Section: base
Maintainer: APT Development Team <deity@lists.debian.org>
Compressed size: 970k
Uncompressed size: 2961k
Source Package: apt
--\ Depends
--- libc6 (>= 2.3.2.ds1-4)
--- libgcc1 (>= 1:3.3.3-1)
--- libstdc++5 (>= 1:3.3.3-1)
--\ Suggests
--- aptitude | synaptic | gnome-apt | wajig
--- dpkg-dev
--\ apt-doc (UNSATISFIED)
p 0.6.25
p 0.5.25
--\ Replaces
--- libapt-pkg-doc (< 0.3.7)
--- libapt-pkg-dev (< 0.3.7)
--- Package names provided by apt
--- Packages which depend on apt
--\ Versions
p A 0.6.25
i A 0.5.25
This display can be navigated in a manner similar to the
package list: for instance, in the screenshot above, I
expanded the dependency on
apt-doc, revealing the available
versions of apt-doc which will
fulfill the dependency. These versions can be manipulated
in the same way that packages can: for instance, to
install version 0.5.25 of
apt-doc, you would highlight it
and press +.
To quickly satisfy a dependency, select the dependency
and press +; &aptitude; will
attempt to automatically satisfy it.
In addition to the dependencies of a package, you can view
the package names that it Provides, the packages which
depend upon it, and the available versions of the package
(including any other packages that Provide it).
As usual, you can dismiss this screen and return to the
main view by pressing q. For
convenience, a few other information screens (which only
display some commonly-used information, hiding the rest)
are available: press v to view the
versions of a package, d to view the
dependencies of a package, and r to view
the reverse dependencies of a package (packages which
depend upon it).
Modifying package states
The following commands are available to modify the states of
packages. Commands take effect the next time you perform an
install run; until you
do, all of these commands can be reversed using &undo-undo;.
To apply a command to a package, simply select the package
in a package list and issue the command. These commands can
also be applied to groups of packages by selecting the group
header (for instance, Upgradable Packages) and issuing the
command.
CommandDescriptionInstall: &package-install;Flag the current package for installation.
If the package is not installed, it will be
installed. If it is already installed, it will be
upgraded if possible and any sticky upgrade
prevention that is in effect (eg, Hold) will be
cancelled.
Remove: &package-remove;Flag the currently selected package for
removal.
If the package is installed, it will be removed.
Purge: &package-purge;Flag the current package to be purged.
If the package is installed, it will be removed.
Furthermore, even if it is removed, any remaining
files (such as configuration files) related to the
package will be removed from the system.
Keep: &package-keep;
Flag the current package to be kept at its current
version.
Any action that was to be performed on the package
-- installation, removal, or upgrade -- is
cancelled, and any persistent hold that was set on
the package is removed.
Hold: &package-hold;
Set a persistent hold on the package.
As with Keep, any action that was to be performed
on the package is cancelled. In addition, the
package will not be automatically upgraded
That is, it will be unaffected by
&actions-upgrade; or the full-upgrade
or safe-upgrade
command-line actions.
until the hold is removed. You may cancel a hold
by issuing the Install command.
&package-forbid;
The package will not be automatically
upgraded
to the version it would currently be upgraded to.
If it was going to be upgraded, the upgrade will
be cancelled.
If you issue this command on a particular version
of a package, the package will not be upgraded to
the selected version. Note that only one version
can be forbidden at once.
This functionality is largely provided as a
convenience for users of the unstable
distribution, so they can avoid known-bad versions
of packages.
Reinstall: press L
Reinstalls the package.
Note that the reinstallation will not be saved
when you quit &aptitude; or perform an install run,
for technical reasons (essentially, the
underlying software layers
(dpkg and &apt;) do not provide
any way to find out whether a reinstallation was
successful or not).
&package-markauto;, &package-markmanual;
Sets whether the package is treated as having been
automatically installed; automatically installed
packages will be removed when no other package
requires them. For more information, see .
In addition to these commands that affect the selected
package, there are two commands that affect large numbers of
packages at once regardless of what is selected.
&actions-forget; clears the new status of all packages in
the package list, and &actions-upgrade; flags every package
which can be upgraded for upgrade, except for packages that
are held back or would be upgraded to a forbidden version.
All changes to package states are saved when you quit
&aptitude;, update the package list, or perform an install
run. If you do not wish to save your changes, you can
always abort &aptitude; by pressing
Ctrl-C.
Downloading, installing, and removing packages
Changing package states as described in the previous section
does not actually affect what is installed on your system.
Thus, you can adjust the state of packages without affecting
your system until you are happy with what you see; once you
are, you can commit the changes by actually installing and
removing packages.This is sometimes referred
to as an install run, even though you might be upgrading
or removing packages in addition to installing
them.
To commit your changes, use the &actions-install; command.
Selecting this command will display a preview screen
describing the changes that will be performed. This screen
is just a package list, and you can manipulate the packages
(for instance, cancelling unwanted removals) in the same way
that you could in the main list.
When you are done, use &views-close; to cancel the
installation, or use &actions-install; to proceed.
&aptitude; will download any files that need to be
downloaded, then prompt you to continue with the
installation. When you select Continue, the installations
and removals will commence.
Packages that are downloaded by &aptitude; are placed in a
cache directory (typically
/var/cache/apt/archives). Normally,
they are just left in this directory ad infinitum. To
delete all the files in this directory, use &actions-clean;;
to delete only files which cannot be downloaded again (ie,
obsolete packages), use &actions-clean-obs;.
Understanding and managing package trust
&apt;'s ability to access multiple package sources leads to
a potential security vulnerability. Suppose you add an
archive of packages published by Joe Random Hacker to your
sources.list file in order to install
Joe's gargleblast package. It is
possible, however, that -- unbeknownst to you -- Joe's
archive also contains his own customized
versions of packages such as libc6
and ssh...versions that steal your
private information or open backdoors on your system! If
these packages have higher version numbers than the
legitimate Debian packages, &apt; will blithely install them
on your system during your next upgrade, allowing Joe to do
his dirty work undetected. Joe could also break into your
mirror of the Debian archives and replace the legitimate
software with his doctored version.
Luckily, newer versions of &apt; and &aptitude;, such as the
version documented in this manual, have built-in safeguards
to help defeat this type of attack. &apt; uses strong
security mechanisms based on the popular GPG encryption software
to verify that the packages being distributed from the
official Debian mirrors are the same packages that were
uploaded by the Debian developers. &aptitude; will then
warn you if you attempt to install a package from a
non-Debian source, or if you attempt to upgrade a package
that was installed from a Debian source to a version that
came from a non-Debian source.
The security mechanisms in &apt; provide a near-perfect
guarantee that the contents of your archive mirror are
identical to the contents of the master Debian archive.
However, they are not a panacea: for instance, there are
many ways that a tampered package could theoretically find
its way into the master Debian archive.
Ensuring that you only install software from a trusted
source will give you an important degree of protection
against malicious packages, but it cannot eliminate all
the risks inherent in installing software.
Understanding trust
&apt; allows the administrator of an archive to provide a
signature of the archive's index.
This signature, which (for all practical purposes) cannot
be forged, indicates that the package files listed in the
index are the same files that the administrator intended
to place in the archive: ie, that the contents of the
archive have not been tampered with since it was
created.As noted above, it does
not indicate that the packages in the
archive are secure, or even non-malicious; it merely shows
that they are genuine. The signature can
be validated by checking that it corresponds to the
administrator's public key. The
public key of the Debian archive is distributed with
&apt;, typically on your Debian CD.
When &aptitude; downloads an archive index, it will check
whether the index is properly signed. If it is unsigned,
&aptitude; will not trust package files from that
archive. (see below for information on what this means) If
it has a signature but the signature is incorrect or
cannot be verified, a warning will be printed and
&aptitude; will refuse to trust packages from that
archive.
Later, when you perform an install run, &aptitude;
will check whether the packages are from trusted sources.
If an untrusted package is being installed, or a package
is being upgraded from a trusted to an untrusted version,
a warning will be displayed and you will have the
opportunity to abort the download:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.3.0 Will use 831kB of disk space DL Size: 30.4MB
--\ Packages to be upgraded
iu U wesnoth -98.3kB 0.8.7-1 0.8.8-1.0w
iuAU wesnoth-data +930kB 0.8.7-1 0.8.8-1.0w
+------------------------------------------------------------------------------+
|WARNING: untrusted versions of the following packages will be installed! #|
| #|
|Untrusted packages could compromise your system's security. You should only #|
|proceed with the installation if you are certain that this is what you want #|
|to do. #|
| #|
| * wesnoth [version 0.8.8-1.0wesnoth.org] #|
| * wesnoth-data [version 0.8.8-1.0wesnoth.org] #|
| * wesnoth-music [version 0.8.8-1.0wesnoth.org] #|
| [ Really Continue ] [ Abort Installation ] |
+------------------------------------------------------------------------------+
#
#
#
#
#
#Trusting additional keys
You might find it useful to allow &apt; to trust
additional archives, besides the main Debian archive. For
each archive that you want to trust, you will have to
acquire the public key that is used to sign the archive's
package index. This is typically a text file whose name
ends in .asc; it might be provided by
the site administrator or downloadable from a public
keyserver. For more information on what public keys are
and how to get them, see the GPG web page.
The list of keys that apt will trust is stored in the
keyring file/etc/apt/trusted.gpg. Once you have
the GPG key, you can add it to this file by executing the
command gpg --no-default-keyring --keyring
/etc/apt/trusted.gpg --import
newkey.asc.
&aptitude; will then trust any archive that is signed with
the key contained in newkey.asc.
Once an archive's key has been added to the APT keyring,
it will be trusted just as much as the main Debian
mirrors themselves! You should only do this if you are
very confident that the key you are adding is correct
and that the person who holds the
key is trustworthy and competent.
Managing automatically installed packages
To install one package, it is often necessary to install
several others (to fulfill its dependencies). For instance,
if you wish to install the
clanbomber package, you must also
install the package libclanlib2.
If you remove clanbomber again, you
probably no longer need the
libclanlib2 package; &aptitude;
will attempt to detect this and automatically remove the
libclanlib2 package.
It works like this: when you install a package, &aptitude;
will automatically install any other packages on which it
depends. These packages are marked as having been
automatically installed; &aptitude; will monitor them and
remove them when they are no longer depended upon by any
manually installed package
More precisely: they will be removed when there is no
path via Depends, PreDepends, or Recommends to them from
a manually installed package. If Aptitude::Keep-Suggests
is true, a Suggests relationship is also enough to keep
a package installed.
. They will appear in the preview as
packages being removed because they are no longer used.
As with any automatic process, there is a potential for
things to go haywire. For instance, even if a package was
automatically installed to start with, it might turn out to
be useful in its own right. You can cancel the automatic
flag at any time by pressing m; if the
package is already being removed, you can use
&package-install; to cancel the removal and clear the
automatic flag.
Resolving package dependenciesDependency resolution in &aptitude;
There are two main dependency resolution algorithms in
&aptitude;.
The first is an algorithm that is also used by programs such
as &apt-get; and synaptic; I will call
it immediate resolution. It is invoked
whenever you select a package for installation
interactively, and immediately after one or more packages
are marked for installation at the command-line. Immediate
resolution is fast and will solve most dependency problems,
but it is sometimes unable to find any solution.
The second algorithm, which I will call interactive
resolution, is invoked when packages have broken
dependencies even after immediate
resolutionOr when immediate resolution is
disabled.. It can resolve more
dependencies, it allows you to review a solution before
applying it, and it allows you to provide feedback to the
resolver, guiding it towards a better solution.
Immediate dependency resolution
Whenever you choose to install or upgrade a package in
&aptitude;, &aptitude; makes an immediate attempt to resolve
any of its dependencies that are not fulfilled. For each
unsatisfied dependency (either a Depends, a
Recommends, or a Conflicts),
it performs the following steps:
If the dependency is a recommendation, &aptitude; tries
to guess whether it is a new
recommendation or a previously satisfied
recommendation. &aptitude; considers a recommendation
to be new if the package declaring the
recommendation is not currently installed, or if its
installed version does not recommend a package of the
same name. On the other hand, a recommendation is
previously satisfied if the package
declaring the recommendation is installed, the currently
installed version recommends a package of the same name,
and that recommendation is currently fulfilled.
For example: suppose that version 1.0
of prog recommends version
4.0 of libcool1,
but version 2.0 of
prog recommends version
5.0 of libcool1,
and also recommends apache. If you
choose to upgrade prog from version
1.0 to version
2.0, the recommendation of
apache will be considered to be
new because version
1.0 of prog did
not recommend apache. On the other
hand, the recommendation of libcool1
is notnew, because
version 1.0 of
prog recommended
libcool1, even though it recommended
a different version. However, if
libcool1 is installed, then that
recommendation will be considered to be
previously satisfied.
If the configuration option Apt::Install-Recommends
is true, &aptitude; will always
attempt to fulfill new and
previously satisfied recommendations; all
others will be ignored by immediate resolution. If that
option is false, immediate dependency
resolution will ignore all
recommendations.
If the dependency is on several packages combined with
OR, examine each of the alternatives in the order that
they are given. For instance, if a package depends on
exim |
mail-transport-agent, &aptitude; will
first process exim, then
mail-transport-agent.
For each alternative, attempt to resolve it. If the
dependency is a conflict, remove the current alternative
if it is installed (and for an unversioned conflict,
also remove any package providing the target of the
conflict). Otherwise, install the candidate version of
the current alternative if it satisfies the dependency.
If not, or if there is no candidate version (for
instance, because the current alternative is a virtual
package), and if the dependency is unversioned, attempt
to install the highest-priority
packageThe package with the highest
dpkg priority, not the package with
the highest &apt; pin priority. whose
candidate version provides the target of the current
alternative.
For instance, say we are attempting to resolve
Depends: exim |
mail-transport-agent. &aptitude; will
first attempt to install the package
exim. If exim is
not available, &aptitude; will then attempt to install
the highest-priority package whose candidate version
provides exim. If there is no such
package, &aptitude; will install the highest-priority
package whose candidate version provides the virtual
package mail-transport-agent. On the
other hand, suppose that the dependency is
Depends: exim (>= 2.0.0) |
mail-transport-agent, but only version
1.0 of exim is
available. In this case, &aptitude; will not install
exim (because the version does not
match), nor will it attempt to install packages
providing exim (because virtual
packages cannot match a dependency with a version
restriction). Thus, &aptitude; will fall back to
installing the highest-priority package whose candidate
version provides
mail-transport-agent.
If a package was installed by the previous step, resolve
its dependencies using this algorithm, then stop.
While this technique very often solves all the outstanding
package dependencies, it can fail in a number of common
circumstances.
Conflicts are resolved by removing the package that is
the target of the conflict. But now other packages that
depend on this package have unresolved dependencies; the
immediate resolver makes no attempt to fix them.
A dependency might not be satisfiable due to version
restrictions and due to the limitation that only
candidate versions are considered. For instance, say
that versions 1.0 and
2.0 of fileutils
are available, that the candidate version is
1.0, and that the package
octopus declares a dependency
Depends: fileutils (>=
2.0). Immediate resolution is unable
to resolve this dependency: it will never consider
version 2.0 of the package, since
that is not the candidate version.
The interactive dependency resolver can solve these
situations and more. When there are broken dependencies
left over, or when immediate dependency resolution is
disabled, the interactive resolver will automatically start
searching for a solution. The next section describes how to
use the interactive dependency resolver.
Resolving Dependencies Interactively
If a dependency problem arises that cannot be handled using
the immediate dependency resolver, &aptitude; can assist you
in resolving it. As soon as a problem occurs, a red bar
will appear at the bottom of the screen with a summary of
&aptitude;'s suggestion about how to fix it. For instance,
in the following screenshot, &aptitude; is indicating that
it can resolve the situation by keeping two packages at
their current versions.
Actions Undo Package Resolver Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.3.3 #Broken: 1 Will free 48.6MB of disk space
i A nautilus 2.10.1-4 2.10.1-4
i nautilus-cd-burner 2.10.2-1.1 2.10.2-1.1
i A nautilus-data 2.10.1-4 2.10.1-4
i netspeed 0.12.1-1 0.12.1-1
i A oaf 0.6.10-3 0.6.10-3
i pybliographer 1.2.6.2-1 1.2.6.2-1
i rhythmbox 0.8.8-13 0.8.8-13
i shermans-aquarium 3.0.1-1 3.0.1-1
idA sound-juicer -1733kB 2.10.1-3 2.10.1-3
GNOME 2 CD Ripper
sound-juicer will be removed.
The following packages depend on sound-juicer and will be broken by its
removal:
* gnome-desktop-environment depends on sound-juicer
[1(1)/...] Suggest 2 keeps
e: Examine !: Apply .: Next ,: Previous
As indicated at the bottom of the screen, you can view
additional solutions by pressing . and
,, apply the current solution by pressing
!, and examine the solution in more detail
by pressing e. When you examine the
current solution, a screen similar to the following will
appear:
Actions Undo Package Resolver Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Packages Resolve Dependencies
--\ Keep the following packages at their current version:
gstreamer0.8-cdparanoia [0.8.10-1 (unstable, now)]
sound-juicer [2.10.1-2 (now)]
[1(1)/...] Suggest 2 keeps
e: Examine !: Apply .: Next ,: Previous
You can access information about the package affected by an
action by simply pressing Enter while the
package is highlighted. For a more detailed explanation of
why &aptitude; made a particular decision, you can highlight
the element in the list. When you do so, the lower half of
the screen will display the dependency which was resolved by
&aptitude;'s choice, along with every way in which this
dependency could have been resolved.
Actions Undo Package Resolver Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Packages Resolve Dependencies
--\ Keep the following packages at their current version:
gstreamer0.8-cdparanoia [0.8.11-1 (unstable, now)]
sound-juicer [2.10.1-3 (unstable, now)]
cdparanoia plugin for GStreamer
sound-juicer depends upon gstreamer0.8-cdparanoia
--\ The following actions will resolve this dependency:
-> Downgrade sound-juicer [2.10.1-3 (unstable, now) -> 0.6.1-2 (testing)]
-> Remove sound-juicer [2.10.1-3 (unstable, now)]
-> Cancel the removal of gstreamer0.8-cdparanoia
-> Downgrade gstreamer0.8-cdparanoia [0.8.11-1 (unstable, now) -> 0.8.8-3 (tes
[1(1)/...] Suggest 2 keeps
e: Examine !: Apply .: Next ,: Previous
You can guide the dependency resolver to a solution of which
you approve by approving or
rejecting the individual actions of a
solution. If you approve an action,
the resolver will choose it whenever possible, ignoring
alternatives (when there are several approved alternatives,
any one of them could be chosen). On the other hand, if you
reject an action, the resolver will
never choose that action.
To reject an action, highlight it and press
r; the rejection can be cancelled by
pressing r again. Similarly, select an
action and press a to approve it; press
a again to restore its original state. You
can undo either action by using &undo-undo; while the
resolver screen is active. If you cancel a rejection or an
approval, any solutions that were ignored will be available
the next time that you generate a new solution.
By default, the resolver rejects actions that change the
state of held packages, or that install forbidden versions
of packages. You can override these rejections, thus
allowing the hold or forbidding to be automatically
overridden, in the same way that you would override any
other rejection. Setting the configuration option Aptitude::ProblemResolver::Allow-Break-Holds
to true will disable this behavior,
meaning that the resolver will always break holds (albeit
at a penalty, see Aptitude::ProblemResolver::BreakHoldScore).
Rejected actions are colored red and marked with an
R, while approved actions are colored green
and marked with an A. You can see this in
the following screenshot, where the action keep
gstreamer0.8-cdparanoia at its
current version has been rejected, and the action
keep sound-juicer at its
current version has been approved.
Actions Undo Package Resolver Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Packages Resolve Dependencies
--\ Keep the following packages at their current version:
R gstreamer0.8-cdparanoia [0.8.11-1 (unstable, now)]
A sound-juicer [2.10.1-3 (unstable, now)]
[1(1)/...] Suggest 2 keeps
e: Examine !: Apply .: Next ,: Previous
Rejections and approvals only affect newly
generated solutions. You can tell when a new
solution will be generated by examining the indicator in the
lower left hand corner of the screen: if there is a number
in parentheses, it is the number of solutions that have been
generated. Thus, when the number outside the parentheses
and the number inside are identical (as above), pressing
. will generate a new solution. If there
is no number in parentheses (for instance, the indicator
reads [1/5]), then there are no more
solutions to generate. At any time, you can select the
last generated solution by pressing >,
and the first generated solution by pressing
<.
The state of the problem resolver is discarded when you
modify the state of any package. If you mark a package
for installation, for upgrade, for removal, etc, the
resolver will forget all of your rejections and approvals,
as well as all the solutions that have been generated so
far.
In addition to selecting actions in the list at the top of
the screen, you can also select them using the list in the
bottom half. To access this list, either click in it using
the mouse or press Tab. Finally, to see
the decisions that the problem resolver took arranged in
order, press o. This will give a list of
the dependencies that were resolved and the action taken to
resolve them, as in the following screenshot.
Actions Undo Package Resolver Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Packages Resolve Dependencies
--\ gnome-desktop-environment depends upon sound-juicer
-> Cancel the removal of sound-juicer
--\ sound-juicer depends upon gstreamer0.8-cdparanoia
-> Cancel the removal of gstreamer0.8-cdparanoia
GNOME 2 CD Ripper
gnome-desktop-environment depends upon sound-juicer
--\ The following actions will resolve this dependency:
-> Remove gnome-desktop-environment [1:2.10.2.3 (unstable, testing, now)]
-> Cancel the removal of sound-juicer
-> Downgrade sound-juicer [2.10.1-3 (unstable, now) -> 0.6.1-2 (testing)]
[1(1)/...] Suggest 2 keeps
e: Examine !: Apply .: Next ,: Previous
You can leave this display mode by pressing
o again.
Costs in the interactive dependency resolverCosts and cost components
The cost of a solution produced by
the interactive dependency resolver is a value that
&aptitude; uses to determine how bad that
solution is. Solutions that are better are
always displayed before solutions that are
worse. The cost of solutions is defined in
the configuration option Aptitude::ProblemResolver::SolutionCost.
Some typical costs are shown in .
Sample resolver costs
The default cost, sorting solutions by their safety
cost, then by their apt pin priority:
safety, priority
Remove as few packages as possible, then cancel as few
actions as possible:
removals, canceled-actions
Sort solutions by the number of packages they remove
plus twice the number of actions
they cancel.
removals + 2 * canceled-actions
As can be seen from the above examples, a cost is not
necessarily a single number. In fact, a cost consists of
one or more cost components, each
of which is a number associated with the solution. When
sorting solutions, the resolver examines cost components
in order, proceeding to later components only if the
earlier ones are equal. For instance, in the cost
removals,
canceled-actions, solutions with fewer
removals always appear before solutions with more
removals, regardless of how many canceled actions they
have. However, solutions with the same number of removals
are sorted so that solutions with fewer canceled actions
appear first.
Cost components come in two flavors:
basic cost components and
compound cost components.
Basic components simply name some property of the
solution, such as
upgrades or
removals. A list of
built-in basic components provided by &aptitude; can be
found in . You
can also create your own cost components using the
add-to-cost-component and
raise-cost-component hints; see for details.
Each basic component is either a
counter or a
level. Counters count how many of a
solution's actions meet some condition (such as removing
packages or installing new packages), while levels
associate a number with each action and compute the
highest number associated with any action in the solution.
Basic cost componentsNameTypeDescriptionbroken-holdsCounter
Counts the number of holds that the solution
breaks, if the resolver is allowed to break holds
(Aptitude::ProblemResolver::Allow-Break-Holds).
canceled-actionsCounter
Counts the number of pending actions that the
solution cancels (keeping packages at their
current version).
installsCounter
Counts the number of packages that the solution
installs.
non-default-versionsCounter
Counts the number of versions that the solution
installs or upgrades from non-default sources.
priorityLevel
A value that increases as the apt pin priority of
a version decreases. Specifically, this is
computed by negating the pin priority (so, e.g.,
if the pin priority is 500, this component will
compute -500).
removalsCounter
Counts the number of packages that the solution
removes.
removals-of-manualCounter
Counts the number of manually installed packages
that the solution removes.
safetyLevel
A broad heuristic that increases as actions become
less safe; see
for details.
upgradesCounter
Counts the number of packages that the solution
upgrades.
Compound components are built by combining the values of
basic components. For instance, removals +
canceled-actions adds the components
removal and
canceled-actions, resulting in a
component that counts the number of removals
and canceled actions. Compound
components combine counters by adding them together and
levels by taking their maximum value, as shown in .
It is an error to add two levels, or to take the maximum
of two counters, or to combine levels and counters in
any way. For instance, the costs removals +
safety and max(upgrades,
installs) will be treated as errors and
ignored by the resolver.This limit was
imposed because more complex cost structures could make
it difficult to optimize the resolver. Future versions
of the program might remove some of the restrictions if
they turn out to be unnecessary.
Note that each individual basic component can be
multiplied by a scaling factor before it is combined with
other components. This can be used to control the
trade-offs that the resolver makes between costs. For
instance, a cost of 2*removals +
3*upgrades says that three removals are exactly as
bad as two upgrades. Solutions that
contain four removals and one upgrade will be considered
equivalent to solutions containing one removal and three
upgrades, since both have a cost of eleven.
Safety costs
The safety cost component is a
heuristic estimate of how safe or
unsafe a solution is. Safety costs can be
thought of as a way of dividing solutions into several
numbered levels, where less
safe levels are given higher numbers. shows how this works
with &aptitude;'s default settings.
Safety cost levels are just one way to control the order
in which dependency solutions are returned. See for a full
description of how to change the order in which
&aptitude; sorts solutions.
By default, &aptitude; initializes the resolver with a
reasonable set of safety cost levels. They
are:
Default safety cost levelsCost levelDescriptionConfiguration option10,000
Solutions that include only safe
actions (installing the default target for a
package or keeping a package at its current
version) and package removals.
Aptitude::ProblemResolver::Safe-Level, Aptitude::ProblemResolver::Remove-Level20,000
The solution that cancels all the user's actions.
Aptitude::ProblemResolver::Keep-All-Level40,000
Solutions that break holds set by the user or
install forbidden versions.
Aptitude::ProblemResolver::Break-Hold-Level50,000
Solutions that install packages from non-default
versions (such as
experimental,
for instance).
Aptitude::ProblemResolver::Non-Default-Level60,000
Solutions that remove Essential packages.
Aptitude::ProblemResolver::Remove-Essential-Level
If a solution qualifies for several safety cost levels, it
will be placed in the highest one, that is, the one that
appears last. For example, a solution that upgrades one
package to its default version and breaks a hold on a
second package will be placed at level 40,000. You can
adjust the levels of individual versions using resolver
hints; see
for details. The default levels are illustrated in .
Configuring the interactive dependency resolverConfiguring resolver hints
To improve the quality of the dependency solutions that
you receive, you can provide hints to the interactive
dependency resolver. These hints can alter the priorities
of the resolver, biasing it more strongly in favor of one
version or package, or they can be used to
pre-load the resolver with rejections and
approvals, as if you had entered the resolver and manually
rejected or approved various versions.
Hints are stored in the &apt; configuration file,
/etc/apt/apt.conf, in the
configuration group Aptitude::ProblemResolver::Hints
(see for details on the
configuration file).
Each resolver hint consists of an
action, a
target, and an optional
version. A hint is written
like this: "actiontargetversion".
To apply a resolver hint, &aptitude; locates one or more
packages using the value of
target, chooses one or more
versions of those packages using the value of
version, and finally performs
the given action.
The action field of a resolver
hint may be one of the following:
approve: Approve the
version, as if the command &resolver-approve;
had been invoked on it.
reject: Reject the
version, as if the command &resolver-reject;
had been invoked on it.
discard: Discard
every solution containing the version. Differs from
reject in that it is
not visible to the user and cannot be modified
interactively.
increase-safety-cost-to
number:
increase the safety cost of any solution that contains
the version to number; if
its safety cost is already higher than
number, this hint has no
effect. The safety cost can be used (and is used by
default) to control the order in which solutions
appear; see
and
for details.
Several special cost levels can be chosen by name:
conflict,
discard: instead of changing
the safety cost, discard solutions containing
the version as if the discard
hint had been applied.
maximum: the highest safety
cost.
minimum: the lowest safety
cost. All searches start at this cost, so
increasing a version to this cost
has no effect. However, this value can also be
used when adjusting the predefined cost levels:
for instance, setting Aptitude::ProblemResolver::Remove-Level
to minimum
will cause removed packages to have no effect on
the safety cost of a solution.
The increase-safety-cost-to hint
is applied in addition to any
default safety cost that is due to the selected
action. For instance, a hint that increases the
safety cost of install
hal from
experimental to
15,000 will have no effect, because that action
already has a safety cost of 50,000 (assuming that
this version of hal is not
the default candidate version).
number: add
the given number to the
version's score, biasing
the resolver in favor of it or (with a negative
number) away from it. For instance, the hint
200 emacs adds 200 to the score of
emacs, whereas the hint
-10 emacs subtracts 10 from its
score.
If target field of a resolver
hint contains a question mark
(?) or tilde
(~), it is considered to
be a search pattern and all matching package versions are
considered. Otherwise, it is considered to be the name of
a package to select. So the target
g++ will select only the
g++ package, but the target
?section(non-free) will
select any package in the non-free
section. See for more
information on search patterns.
If the version field is not
present, then all versions of the package are affected by
the hint. Otherwise, it may have any of the following
forms:
/archive:
the hint only affects versions that are available in
the given archive.
<version:
the hint only affects versions whose version number is
less than version.
<=version:
the hint only affects versions whose version number is
less than or equal to
version.
=version:
the hint only affects versions whose version number is
version.
<>version:
the hint only affects versions whose version number is
not version.
>=version:
the hint only affects versions whose version number is
greater than or equal to
version.
>version:
the hint only affects versions whose version number is
greater than version.
:UNINST: instead of
affecting any of the versions of
target, the hint affects
the decision to remove
target. For instance,
reject aptitude
:UNINST will prevent the resolver
from attempting to remove &aptitude;.
version: the
hint only affects versions whose version number is
version.
Search patterns
When you search for a package or set a display limit in
&aptitude;, the string you enter is known as a search
pattern. While the most basic usage of search
patterns is to match packages by name, &aptitude; allows you
to create much more complex searches. In addition to the
visual interface, some command-line operations can use search
patterns; see for details.
A search pattern consists of one or more conditions (sometimes
known as terms); packages match the pattern if
they match all of its terms. Terms generally start with a
question mark (?), followed by the name of the
match term, which describes the search that the term performs:
for instance, the term &Sname; matches package names, while
the term &Sversion; matches package versions. Finally, any
additional parameters to the search term are placed in
parentheses (see the documentation of individual terms for
details of what each term's parameters mean).
Text with no leading ? also forms a search
pattern: &aptitude; will treat each word (or quoted string)
as the argument to a &Sname; pattern, which searches for a
package whose name matches the text when the text is
interpreted as a regular expression.
The behavior of &aptitude; when given a search pattern without
a leading ? (or ~) is provided
as a convenience for interactive use and will change in
future releases; scripts that invoke
aptitude should explicitly name the
search strategy they want to use. That is, scripts should
search for &Sname;(coq)
rather than coq).
Searching for strings
Many search terms take a string as a parameter and match it
against one or more fields of a package. Strings can be
entered either with or without double quotes
("), so
&Sname;(scorch) and
&Sname;("scorch") will
perform the same search. If you enter a search string using
double quotes, you can include a literal double-quote in the
search string by placing a backslash
(\) immediately before it:
for instance,
&Sdescription;("\"easy\"")
will match any package whose description contains the string
"easy".
If you enter a bare string, one not
surrounded by double quotes, then &aptitude; will consider
the string to have ended when it encounters
the closing parenthesis or the comma before a second
argument to the search term.
&aptitude; will only treat the comma as special if there
is a second argument, so (for instance)
&Sname;(apt,itude)
searches for the string
apt,itude in the
Name field of packages.
While this behavior is well-defined, it may be
surprising; I recommend using quoted strings for any
pattern that contains characters that could have a
special meaning.
To remove the special meaning of these characters, place a
tilde (~) directly before
them. For instance,
&Sdescription;(etc)) is a
syntax error, because the first
) ends the &Sdescription;
term, and the second )
does not correspond to any
(. In contrast,
&Sdescription;(etc~))
matches any package whose description contains the text
etc). There are
additional considerations if you are using the shorthand
notation for a term; see for details.
Most textual searches (for package names, descriptions, etc)
are performed using case-insensitive regular
expressions. A regular expression will match
against a field if any portion of the field matches the
expression; for instance,
ogg[0-9] will match
libogg5,
ogg123, and
theogg4u.
Some characters have a special meaning within regular
expressions
Characters with a special meaning include:
+,
-,
.,
(,
),
|,
[,
],
^,
$, and
?. Note that some of
these are also &aptitude; metacharacters, so if you want
to type (for instance) a literal
|, it must be
double-escaped:
&Sdescription;(\~|)
will match packages whose description contains a
vertical bar character
(|).
, so if you want to match them in searches you need to
backslash-escape them: for instance, to find
g++, you should use the
pattern g\+\+.
The characters ! and
| have special meanings
within search patterns. In order to include these
characters in an unquoted string, you can place a tilde
(~) directly before them.
For instance, to match packages whose description contains
either grand or oblique, use
the pattern
&Sdescription;(grand~|oblique).
However, you will probably find it more convenient to simply
use a quoted string in these cases:
&Sdescription;("grand|oblique").
Shorthand for search terms
Some search terms can be written using short
forms, which consist of a tilde
(~) followed by a single
character that identifies the term, and finally the
arguments (if any) to the term. For instance, the short
form of &Sname;(aptitude) is ~n
aptitude.
When writing a term using its short form, tilde characters
and whitespace -- that is, space characters,
tabs, and so on -- will break the term off and start a new
term. For instance, ~mDaniel
Burrows will match any package whose
maintainer field contains
Daniel and whose name
contains Burrows, while
~i~napt matches installed
packages whose name contains apt. To
include whitespace characters in the search expression, you
can either place a tilde in front of it (as in
Daniel~ Burrows) or place quotation marks
around it (as in "Debian Project" or even
Debian" "Project). Inside a quoted
string, the backslash character (\) can be
used to cancel the special meaning of the quotation mark:
for instance, ~d"\"email" will match any
package whose description contains a quotation mark followed
immediately by email.
The backslash escapes \\,
\n, and \t are also
available.
Question marks (?) will
not end the short form of a term,
even if they are followed by the name of a search term.
For instance,
~napt?priority(required)
will match all packages whose name matches the regular
expression
apt?priority(required).
To combine a short query term with a search term specified
by name, add one or more spaces between the two terms, as
in
~napt ?priority(required),
or place quotation marks around the text (if any)
following the short form of a term, as in
~n"apt"?priority(required).
lists the short
form of each search term.
Searches and versions
By default, a pattern matches a package if any version of
the package matches the pattern. However, some patterns
will restrict their sub-patterns to only match against some
versions of a package. For instance, the search term
&Sdepends;(pattern)
will select any package that depends on a package matching
pattern. However,
pattern will only be checked
against the versions of the package that actually satisfy a
dependency. This means that if foo
depends on bar (>= 3.0) and versions
2.0, 3.0, and
4.0 of bar are
available, then in the search pattern
&Sdepends;(&Sversion;(2\.0)), only
versions 3.0 and 4.0
will be tested against &Sversion;(2\.0),
and hence foo will not be found by this
search.
It matters which versions are checked because, as in the
example above, some patterns will match one version but not
another. For instance, the pattern &Sinstalled; will only
match the version of the package (if any) that is currently
installed. Similarly, the pattern
&Smaintainer;(maintainer)
will only match versions that have the given
maintainer. Normally all
versions of a package have the same maintainer, but this is
not always the case; in fact, any search pattern that
examines the fields of a package (other than its name, of
course) will behave this way, because all the fields of a
package can change between versions.
To test a pattern against all the versions of a package,
even if the pattern would normally be tested against only
some of the versions, use the &Swiden; term. For instance,
&Sdepends;(&Swiden;(&Sversion;(2\.0)))
will match any package A that
depends on a package B, where
B has a version matching
2.0, regardless of whether that version
actually satisfies A's
dependency. On the other hand, the &Snarrow; term restricts
the versions that its sub-pattern is matched against:
&Snarrow;(&Sinstalled;,
&Sdepends;(&Sversion;(ubuntu))) will match any
package whose installed version has a dependency that can be
satisfied by a package whose version string contains
ubuntu.
There is a subtle, but important, distinction between
matching a pattern against a package, and matching it
against all the versions of that package. When a pattern
is matched against a package, each of its terms is matched
against the package, and so each term will match if
any version of the package matches.
In contrast, when a pattern is matched against each
version of a package, it will successfully match if it
matches when all its terms are matched against the
same version of the package.
For example: suppose that version 3.0-1
of the package aardvark is installed,
but that version 4.0-1 is available.
Then the search expression
&Sversion;(4\.0-1)&Sinstalled; matches
aardvark, because
&Sversion;(4\.0-1) matches against
version 4.0-1 of
aardvark, while &Sinstalled; matches
against version 3.0-1. On the other
hand, this expression does not match
against all the versions of aardvark,
because no single version is installed and also has a
version number of 4.0-1.
Explicit search targets
Some particularly complex searches can be expressed in
&aptitude; using explicit targets.
In normal search expressions, there is no way to refer to
the package or version that is currently being tested. For
instance, suppose that you want to search for all packages
P that depend on a second package
Q such that
Q recommends
P. Clearly you need to start out
with a &Sdepends;(...) term. But the
term filling in the ... needs to somehow
select packages that are identical to the one being matched
against &Sdepends;. When describing the
goal above, I dealt with this by giving the packages names,
calling them P and
Q; terms with explicit targets
do exactly the same thing.
Astute readers will note that this is essentially a way
to explicitly name the variable in the λ-terms
corresponding to the term. A typical term would
have the form λ
x
. name-equals(x,
pattern); giving this
an explicit target makes x
visible in the search language.
An explicit target is introduced by the &Sfor; term:
This behaves exactly like pattern,
but variable can be used within
pattern to refer to the package or
version that pattern is being
matched against. You can use
variable in two ways:
The term &Sequal; will match exactly the package or
version indicated by the given variable. Specifically:
if the corresponding &Sfor; term is limited to a
particular version, then &Sequal; will match either that
version (if &Sequal; is limited) or the whole package;
otherwise it will match any version of the package.
See for an example
of how to use &Sequal;.
The term
&Sbind;(variable,
pattern) will match
any package or version if the value of
variable matches against
pattern.
For ?-style terms, a shorthand
form is available. The expression
&Sbind;(variable,
?term(args))
can be replaced by
?variable:term(args).
See for an example
of how to use ?bind.
Search term reference provides a brief
summary of all the search terms provided by &aptitude;. A
full description of each term can be found below.
Quick guide to search termsLong formShort formDescription&Sequal;variable
Select the package bound to
variable; see .
&Snot;(pattern)!pattern
Select any package that does not match
pattern.
&Saction;(action)~aaction
Select packages that have been marked for the given
action (e.g.,
install or
upgrade).
&Sall-versions;(pattern)
Select packages whose versions all match
pattern.
&Sand;(pattern1, pattern2)pattern1pattern2
Select any package that matches both
pattern1 and
pattern2.
&Sany-version;(pattern)
Select packages for which at least one version
matches pattern.
&Sarchitecture;(architecture)~rarchitecture
Select packages for the given architecture (such as
amd64, or
all). Special values:
native and foreign.
&Sarchive;(archive)~Aarchive
Select packages from the given archive (such as
unstable).
&Sautomatic;~M
Select packages that were automatically installed.
&Sbind;(variable, pattern)?variable:term-name(args)
Selects anything if
variable matches
pattern; see .
&Sbroken;~b
Select packages that have a broken dependency.
&Sbroken-type;~BdepType
Select package that have a broken dependency of the
given depType.
&Sbroken-type-term;(pattern)~DBdepType:pattern
Select packages that have a broken dependency of the
given depType matching
pattern.
&Sbroken-reverse-dep;(pattern)~RBpattern
Select packages that a package matching
pattern declares a broken
dependency of type depType.
&Sconflicts;(pattern)~Cpattern
Select packages that conflict with a package
matching pattern.
&Sconfig-files;~c
Select packages that were removed but not purged.
&Sdep;(pattern)~DdepType:pattern
Match packages that declare a dependency of type
depType on a package
matching pattern.
&Sdescription;(description)~ddescription
Select packages whose description matches
description.
&Sessential;~E
Select essential packages, those with
Essential: yes in their control
files.
&Sexact-name;(name)
Select packages named
name.
&Sfalse;~F
Select no packages.
&Sfor; variable: pattern
Select packages that match
pattern with
variable bound to the
package being matched; see .
&Sgarbage;~g
Select packages that are not required by any manually
installed package.
&Sinstalled;~iSelect installed packages.&Smaintainer;(maintainer)~mmaintainer
Select packages maintained by
maintainer.
&Smultiarch;(multiarch)
Select packages with a multi-arch capability of
multiarch (that is, either
foreign,
same,
allowed, or
none).
&Snarrow;(filter, pattern)~S filterpattern
Select packages for which a single version matches
both filter and
pattern.
&Sname;(name)~nname, name
Select packages with the given name.
&Snew;~N
Select new packages.
&Sobsolete;~o
Match installed packages that cannot be downloaded.
&Sor;(pattern1, pattern2)pattern1 | pattern2
Select packages that match
pattern1,
pattern2, or both.
&Sorigin;(origin)~Oorigin
Select packages with the given
origin.
&Sprovides;(pattern)~Ppattern
Select packages that provide a package matching
pattern.
&Spriority;(priority)~ppriority
Select packages with the given priority.
&Sreverse-dep;(pattern)~RdepType:pattern
Select packages that are the targets of a dependency
of type depType declared
by a package matching
pattern.
&Sreverse-broken-dep;(pattern)~RBpattern
Select packages that are the targets of a broken
dependency of type
depType declared by a
package matching pattern.
&Ssection;(section)~ssection
Select packages in the given section.
&Ssource-package;(name)
Select packages whose source package name matches
the regular expression
name.
&Ssource-version;(version)
Select packages whose source version matches the
regular expression version.
&Stag;(tag)~Gtag
Select packages that have the given debtags
tag.
&Sterm;(keyword)
Full-text search for packages that contain the given
keyword.
&Sterm-prefix;(keyword)
Full-text search for packages that contain a keyword
that begins with the given
keyword.
&Strue;~T
Select all packages.
&Stask;(task)~ttask
Select packages that are in the given
task.
&Supgradable;~U
Select packages that are installed and can be
upgraded.
&Suser-tag;
Select packages that are marked with a user-tag
matching the regular expression
user-tag.
&Sversion;(version)~Vversion
Select packages whose version matches
version (special values:
CURRENT,
CANDIDATE, and
TARGET).
&Svirtual;~v
Select virtual packages.
&Swiden;(pattern)~Wpattern
Select versions for which
pattern matches any version
of the corresponding package, discarding local
version restrictions.
name
Matches packages whose names match the regular
expression name. This is the
default search mode and is used for patterns that
don't start with ~.
To match packages whose names contain several
different substrings, use the &Sname; term (described
below); for instance,
&Sname;(apti)&Sname;(tude)
will match any package whose name contains
bothapti and
tude.
?=variable
Matches packages that correspond to the value of
variable, which must be bound
by an enclosing &Sfor;. For instance, &Sfor; x:
&Sdepends;( &Srecommends;( ?=x ) ) will match any
package x that depends on a
package which recommends x.
For instance, the following search expression matches
packages that conflict with themselves:
Use of the ?= term.
&Sfor; x: &Sconflicts;(?=x)
See for more
information.
?not(pattern), !pattern
Matches packages which do not match
the pattern pattern. For
instance,
?not(&Sbroken;)
selects packages that are not broken.
To include a ! in a search string, it
must be escaped by placing a tilde
(~) in front of it;
otherwise, &aptitude; will consider it to be part of a
?not term. For instance, to select
packages whose description contains
extra!, use
&Sdescription;(extra~!).
?and(pattern1, pattern2), pattern1pattern2
Matches packages that match both
pattern1 and
pattern2.
?or(pattern1, pattern2), pattern1 | pattern2
Matches packages that match either
pattern1 or
pattern2.
To use the character | in a regular expression, it
must be escaped to prevent &aptitude; from creating
an OR term from it: ~|.
(pattern)
Matches pattern. For instance,
opengl (perl|python)
matches any package whose name contains
opengl, and also contains either
perl or python.
?action(action), ~aaction
Matches packages upon which the given
action is going to be
performed. action can be
install,
upgrade,
downgrade,
remove,
purge,
hold (tests whether a
package has been placed on hold), or
keep (tests whether a
package will be unchanged).
Note that this only tests whether an action is actually
queued up to be performed on a package, not whether it
could be performed. Thus, for
instance, &Saction;(upgrade) matches
exactly those packages that you have already decided to
upgrade, not packages which could
be upgraded in the future (for that, use
&Supgradable;).
?all-versions(pattern)
Matches any package whose versions all match the given
expression. Each version of a package will be
separately tested against
pattern, and the package will
match if all of its versions match. Packages without
versions, such as virtual packages, will always be
matched by this search term.
This term may not be used in a context in which the
versions to match against have already been narrowed,
such as within &Sdepends; or &Snarrow;. However, it may
always be used within &Swiden;.
?any-version(pattern)
Matches a package if any one of its versions matches the
enclosed pattern. This is the dual to &Sall-versions;.
This term may not be used in a context in which the
versions to match against have already been narrowed,
such as within &Sdepends; or &Snarrow;. However, it may
always be used within &Swiden;.
This term is closely related to &Snarrow;.
In fact,
?any-version(pattern1pattern2) is exactly
the same as
&Snarrow;(pattern1,
pattern2).
?architecture(architecture), ~rarchitecture
Matches package versions for the given
architecture. For instance,
?architecture(amd64)
matches amd64 packages, while
?architecture(all)
matches arch-independent packages. Also accepts the
special values native and
foreign.
The value of architecture can
also be an architecture specification string as defined
in Debian Policy § 11.1 Architecture
specification strings. These are strings of the
form os-arch,
where either component can be the wildcard
any. For example,
any-i386 or
linux-any.
?archive(archive), ~Aarchive
Matches package versions which are available from an
archive that matches the regular expression
archive. For instance,
?archive(testing)
matches any package available from the
testing archive.
?automatic, ~M
Matches packages which were automatically installed.
?bind(variable,
pattern),
?variable:term-name(args)
Matches any package or version if the given
pattern matches the package or
version bound to variable,
which must be defined in an enclosing &Sfor;.
Use of the ?bind term&Sfor; x: &Sdepends;(&Sdepends;(&Sfor; z: ?bind(x, &Sdepends;(&Sequal;z))))&Sfor; x: &Sdepends;(&Sdepends;(&Sfor; z: ?x:depends(&Sequal;z)))
The two search patterns in the above example both match
any package x such that
x depends on a package
y which in turn depends on a package
z such that x also
depends directly on z. The first
pattern uses ?bind directly, while
the second one uses an equivalent shorthand syntax.
See for more
information.
?broken, ~b
Matches packages that are broken: they have an
unfulfilled dependency, predependency, breaks, or conflict.
?broken-depType, ~BdepType
Matches packages which have an unfulfilled (broken)
dependency of the given depType.
depType can be
depends,
predepends,
recommends,
suggests,
breaks,
conflicts, or
replaces.
?broken-depType(pattern), ~DBdepType:pattern
Matches packages with an unsatisfied dependency of type
depType on a package matching
pattern.
depType may be any one of the
dependency types listed in the documentation of
?broken-depType.
?conflicts(pattern), ~Cpattern
Matches packages which conflict with a package matching
the given pattern. For
instance,
?conflicts(&Smaintainer;(dburrows@debian.org))
matches any package which conflicts with a package I
maintain.
?config-files, ~c
Matches packages which have been removed, but whose
configuration files remain on the system (ie, they were
removed but not purged).
?depType(pattern), ~DdepType:patterndepType may be any one of the
dependency types given in the documentation of
?broken-depType,
as well as provides: for instance,
&Sdepends;(libpng3) will match any
package that depends on libpng3. If
the short form (~D) is used and
depType is not present, it
defaults to depends.
If depType is
provides, matches
packages that provide a package matching
pattern (the equivalent of
&Sprovides;). Otherwise, matches packages which declare
a dependency of type depType
upon a package version which matches
pattern.
?description(description), ~ddescription
Matches packages whose description matches the regular
expression description.
?essential, ~E
Matches Essential packages.
?exact-name(name)
Matches packages named name.
This is similar to &Sname;, but the name must match
exactly. For instance, the following pattern will match
only the package apt; with
&Sname;, it would also match
aptitude,
uvccapture, etc.
Use of the ?exact-name term?exact-name(apt)?false, ~F
This term does not match any package.
This is provided largely for symmetry with &Strue;.
?for variable: pattern
Matches pattern, but the given
variable may be used inside
pattern to refer to the package
or package version this term to.
You can use variable in two
ways. To apply a ?-style term to
the variable, write
?variable:term-name(args);
for instance, ?x:depends(apt). In
addition, the term
&Sequal;variable
will select any package or version that matches the
value of the given variable.
For instance, the following term will match any package
x that both depends and recommends a
second package y.
Use of the ?for term
?for x: &Sdepends;( ?for y: ?x:recommends( &Sequal;y ) )
See for more
information.
?garbage, ~g
Matches packages which are not installed, or which were
automatically installed and are not depended upon by any
installed package.
?installed, ~i
Matches package versions which are currently installed.
Since all versions are tested by default, this normally
matches packages which are currently installed.
?maintainer(maintainer), ~mmaintainer
Matches packages whose Maintainer field matches the
regular expression
maintainer. For instance,
&Smaintainer;(joeyh)
will find all packages maintained by Joey Hess.
?multiarch(multiarch)
Matches packages with the multi-arch capability
specified by multiarch. For instance,
&Smultiarch;(foreign)
will find all packages which can satisfy dependencies of
packages for another architecture.
&Smultiarch;(none)
will select packages with no multi-arch capability.
?narrow(filter, pattern), ~S filterpattern
This term narrows the search to package
versions matching filter. In
particular, it matches any package version which matches
both filter and
pattern. The string value of
the match is the string value of
pattern.
?name(name), ~nname
Matches packages whose name matches the regular
expression name. For
instance, most of the packages that match
&Sname;(^lib) are
libraries of one sort or another.
?new, ~N
Matches packages which are new: that is,
they have been added to the archive since the last time
the list of packages was cleared using &actions-forget;
or the command-line action forget-new.
?obsolete, ~o
This term matches any installed package which is not
available in any version from any archive. These
packages appear as Obsolete or Locally
Installed in the visual interface.
?origin(origin), ~Oorigin
Matches package versions whose origin matches the
regular expression origin.
For instance,
!?origin(debian) will
find any unofficial packages on your system (packages
not from the Debian archive).
?provides(pattern), ~Ppattern
Matches package versions which provide a package that
matches the pattern. For
instance,
?provides(mail-transport-agent)
will match all the packages that provide
mail-transport-agent.
?priority(priority), ~ppriority
Matches packages whose priority is
priority;
priority must be
extra, important,
optional,
required, or
standard. For instance,
?priority(required)
matches packages whose priority is
required.
?reverse-depType(pattern), ~RdepType:patterndepType may be either
provides or one of the
dependency types given in the documentation of
?broken-depType.
If depType is not present, it
defaults to depends.
If depType is
provides, matches
packages whose name is provided by a package version
matching pattern. Otherwise,
matches packages which a package version matching
pattern declares a dependency of
type depType upon.
?reverse-broken-depType(pattern), ?broken-reverse-depType(pattern), ~RBdepType:patterndepType may be either
provides or one of the
dependency types given in the documentation of
?broken-depType.
If depType is not present, it
defaults to depends.
Matches packages which a package version matching
pattern declares an unsatisfied
dependency of type depType upon.
?section(section), ~ssection
Matches packages whose section matches the regular
expression section.
?source-package(name)
Matches packages whose source package name matches the
regular expression name.
?source-version(version)
Matches packages whose source version matches the
regular expression version.
?tag(tag), ~Gtag
Matches packages whose Tag field matches the regular
expression tag. For
instance, the pattern
?tag(game::strategy) would match
strategy games.
For more information on tags and debtags, see .
?task(task), ~ttask
Matches packages that appear in a task whose name
matches the regular expression
task.
?term(keyword)
This term performs a full-text search for
keyword in the apt package
cache. When used with aptitude
search, &search-limit; in the
curses front-end, or typed into a package search box in
the GTK+ front-end, this term will allow &aptitude; to
accelerate the search using a Xapian index.
?term-prefix(keyword)
This term performs a full-text search for any keyword
beginning with keyword in the
apt package cache. When used with
aptitude search, &search-limit; in the
curses front-end, or typed into a package search box in
the GTK+ front-end, this term will allow &aptitude; to
accelerate the search using a Xapian index.
This is similar to &Sterm;, but matches extensions of
the keyword. For instance,
the following search pattern will match any package
indexed under the keywords hour,
hourglass, hourly,
and so on:
Use of the ?term-prefix term
?term-prefix(hour)
?true, ~T
This term matches any package. For instance,
&Sinstalled;&Sprovides;(&Strue;)
matches installed packages which are provided by any
package.
?upgradable, ~U
This term matches any installed package which can be
upgraded.
?user-tag(tag)
This term matches any package that is marked with a
user-tag matching the regular expression
tag.
?version(version), ~Vversion
Matches any package version whose version number matches
the regular expression
version, with the exceptions
noted below. For instance,
?version(debian)
matches packages whose version contains
debian.
The following values of
version are treated
specially. To search for version numbers containing
these values, preface the value with a backslash; for
instance, to find packages whose version number contains
CURRENT, search for
\CURRENT.
CURRENT matches the currently
installed version of a package, if any.
CANDIDATE matches the version,
if any, of the package that will be installed if
you press + on the package or run
aptitude install on it.
TARGET matches the version of a
package that is currently targeted for
installation, if any.
?virtual, ~v
Matches any package which is purely virtual: that is,
its name is provided by a package or mentioned in a
dependency, but no package of that name exists. For
instance,
?virtual!&Sprovides;(&Strue;)
matches packages which are virtual and are not provided
by any package: ie, packages which are depended upon but
do not exist.
?widen(pattern), ~WpatternWidens the match: if the versions to
match against have been limited by an enclosing term
(such as &Sdepends;), these limits are dropped. Thus,
&Swiden;(pattern)
matches a package version if
pattern matches
any version of that package.
Customizing &aptitude;Customizing the package list
The package list can be heavily customized: how packages are
displayed, how the package hierarchy is formed, how packages
are sorted, and even how the display is organized are all
open to change.
Customizing how packages are displayed
This section describes how to configure the contents and
format of the package list, status line, and header line,
as well as the output of aptitude search.
The format of each of these locations is defined by a
format string. A format string is a string of text
containing %-escapes such as
%p, %S, and so on.
The resulting output is created by taking the text and
replacing the %-escapes according to
their meanings (given below).
A %-escape can either have a fixed
size, in which case it is always replaced by the same
amount of text (with extra space characters added to fill
it out as necessary), or it can be expandable, meaning
that it takes up the space that is not claimed by
fixed-size columns. If there are several expandable
columns, the extra space is divided evenly between them.
All %-escapes come with a default size
and/or expandability. The size of a
%-escape can be changed by writing it
between the % and the character
identifying the escape; for instance,
%20V generates the candidate version of the
package, 20 characters wide. Placing a question mark
(?) between the %
and the character identifying the escape causes the
column's basic width to vary depending on
its content. Note that the resulting columns might not
line up vertically!
If you want a particular %-escape to be
expandable, even though it normally has a fixed width,
place a pound sign (ie,
#) immediately after it.
For instance, to display the candidate version of a
package, no matter how long it is, use the format string
%V#. You can also place
# after something that is not a
%-escape; &aptitude; will
expand the text preceding the
# by inserting extra spaces after it.
In summary, the syntax of a %-escape is:
%width?code#
The configuration variables Aptitude::UI::Package-Display-Format,
Aptitude::UI::Package-Status-Format,
and Aptitude::UI::Package-Header-Format
define the default formats the package list, the header at
the top of the package list, and the status line below the
package list respectively. To change how the results of
an aptitude
search command are displayed, use the
-F option.
The following %-escapes are available
in format strings:
Some of the descriptions below refer to the package.
In the GUI, this is either the package being displayed
or the currently selected package; in the command-line
search, this is the package being displayed.
EscapeNameDefault sizeExpandableDescription%%Literal %1No
This is not really an escape; it simply inserts a
percent sign into the output at the point at which it
occurs.
%#numberParameter ReplacementVariableNo
In some circumstances, a display format string will
have parameters: for instance, in the
command-line search, the groups
matched by the search are used as parameters when
displaying the result. This format code will be
replaced by the parameter indicated by
number.
%aAction Flag1No
A single-character flag summarizing any action to be
performed on the package, as described in
.
%AAction10No
A somewhat more verbose description of the action to
be performed on the package.
%BBroken Count12No
If there are no broken packages, produces nothing.
Otherwise, produces a string such as
Broken: 10
describing the number of broken packages.
%cCurrent State Flag1No
A single-character flag summarizing the current state
of the package, as described in .
%CCurrent State11No
A more verbose description of the current state of the
package.
%dDescription40Yes
The package's short description.
%DPackage Size8No
The size of the package file containing the package.
%HHostname15No
The name of the computer on which &aptitude; is running.
%iPin priority4No
Displays the highest priority assigned to a package
version; for packages, displays the priority of the
version which will be forced to be installed (if any).
%IInstalled Size8No
The (estimated) amount of space the package takes up on disk.
%mMaintainer30Yes
The maintainer of the package.
%MAutomatic Flag1No
If the package is automatically installed, outputs
A; otherwise,
outputs nothing.
%nProgram VersionThe length of &VERSION;.No
Outputs the version of &aptitude; that is running,
currently
&VERSION;.
%NProgram NameThe length of the name.No
Outputs the name of the program; usually
aptitude.
%oDownload Size17No
If no packages are going to be installed, outputs
nothing. Otherwise, outputs a string describing the
total size of all the package files which will be
installed (an estimate of how much needs to be
downloaded); for instance, DL size:
1000B.
%pPackage Name30Yes
Outputs the name of the package. When a package is
displayed in a tree context, the name of the package
will be indented, if possible, according to its depth
in the tree.
%PPriority9No
Outputs the priority of the package.
%rReverse Depends Count2No
Outputs the approximate number of installed packages
which depend upon the package.
%RAbbreviated Priority3No
Outputs an abbreviated description of the package's
priority: for instance,
Important becomes
Imp.
%sSection10No
Outputs the section of the package.
%STrust Status1No
If the package is untrusted, displays the letter "U".
%tArchive10Yes
The archive in which the package is found.
%TTagged1No
Outputs * if the
package is tagged, nothing
otherwise.Currently tagging is not
supported; this escape is for future
use.%uDisk Usage Change30No
If the scheduled actions will alter the amount of
space used on the disk, outputs a description of the
change in disk space; for instance,
Will use 100MB of disk
space.%vCurrent Version14No
Outputs the currently installed version of the
package, or
<none> if the
package is not currently installed.
%VCandidate Version14No
Outputs the version of the package which would be
installed if &package-install; were issued on the
package, or
<none> if the
package is not currently available.
%ZSize Change9No
Outputs how much additional space will be used or how
much space will be freed by installing, upgrading, or
removing a package.
Customizing the package hierarchy
The package hierarchy is generated by a
grouping policy: rules describing
how the hierarchy should be built. The grouping policy
describes a pipeline of rules; each rule
can discard packages, create sub-hierarchies in which
packages reside, or otherwise manipulate the tree. The
configuration items Aptitude::UI::Default-Grouping
and Aptitude::UI::Default-Preview-Grouping
set the grouping policies for newly created package lists
and preview screens, respectively. You can set the
grouping policy for the current
package list by pressing G.
The grouping policy is described by a comma-separated list
of rules:
rule1,rule2,....
Each rule consists of the name
of the rule, possibly followed by arguments: for instance,
versions or
section(subdir). Whether arguments are
required and how many arguments are required (or allowed)
depends on the type of rule.
Rules can be non-terminal or
terminal. A non-terminal rule will
process a package by generating some part of the
hierarchy, then passing the package on to a later rule. A
terminal rule, on the other hand, will also generate part
of the tree (typically items corresponding to the
package), but does not pass its package to a later rule.
If no terminal rule is specified, &aptitude; will use the
default rule, which is to create the standard package
items.
action
Groups packages according to the action scheduled on
them; packages that are not upgradable and will be
unchanged are ignored. This is the grouping that is
used in preview trees.
architecture
Groups packages according to their architecture.
deps
This is a terminal rule.
Creates standard package items which can be expanded
to reveal the dependencies of the package.
filter(pattern)
Include only packages for which at least one version
matches pattern.
If pattern is
missing, no packages are discarded.
This is a backwards compatibility feature and may be
removed in the future.
firstchar
Groups packages based on the first character of
their name.
hier
Groups packages according to an extra data file
describing a hierarchy of packages.
pattern(pattern=> title{ policy }, ...)
A customizable grouping policy. Each version of
every package is matched against the given
patterns. The first
match found is used to assign a
title to the package;
packages are then grouped by their
title. Strings of the
form \N that occur in
title will be replaced by
the Nth result of the match. If
title is not present, it
is assumed to be \1. Note that
packages which do not match any
patterns will not appear
in the tree at all.
Use of pattern to group packages by their maintainerpattern(&Smaintainer;() => \1)
The example above will group packages according to
their Maintainer field. The policy
pattern(&Smaintainer;()) will do
the same thing, as the absent
title defaults to
\1.
Instead of =>
title, an entry
may end with ||. This indicates
that packages matching the corresponding
pattern will be inserted
into the tree at the same level as the
pattern grouping, rather than
being placed in subtrees.
Use of pattern with some
packages placed at the top level
pattern(&Saction;(remove) => Packages
Being Removed, &Strue; ||)
The example above will place packages that are being
removed into a subtree, and place all the other
packages at the current level, grouped according to
the policies that follow pattern.
By default, all the packages that match each pattern
are grouped according to the rules that follow the
pattern policy. To specify a
different policy for some packages, write the policy
in braces ({}) after the title of
the group, after the ||, or after
the pattern if neither is present. For instance:
Use of the pattern grouping policy with sub-policies
pattern(&Saction;(remove) => Packages
Being Removed {}, &Saction;(install) => Packages
Being Installed, &Strue; || {status})
The policy in the above example has the following
effects:
Packages that are being removed are placed into
a subtree labeled Packages Being
Removed; the grouping policy for this
subtree is empty, so the packages are placed
into a flat list.
Packages that are being installed are placed
into a subtree labeled Packages Being
Installed and grouped according to the
policies that follow pattern.
All remaining packages are placed at the top
level of the tree, grouped according to their
status.
See
for more information on the format of
pattern.
priority
Groups packages according to their priority.
section(mode,passthrough)
Groups packages according to their Section field.
mode can be one of the
following:
none
Group based on the whole Section field, so
categories like non-free/games will be
created. This is the default if no
mode is specified.
topdir
Group based on the part of the Section field
before the first /
character; if this part of the Section is not
recognized, or if there is no
/, the first entry in the
list Aptitude::Sections::Top-Sections
will be used instead.
subdir
Group based on the part of the Section field
after the first /
character, if it is contained in the list
Aptitude::Sections::Top-Sections.
If not, or if there is no
/, group based on the
entire Section field instead.
subdirs
Group based on the part of the Section field
after the first /
character, if the portion of the field
preceding it is contained in the list
Aptitude::Sections::Top-Sections;
if not, or if there is no
/, the entire field will be
used. If there are multiple
/ characters in the portion
of the field that is used, a hierarchy of
groups will be formed. For instance, if
games is not
a member of Aptitude::Sections::Top-Sections,
then a package with a section of
games/arcade
will be placed under the top-level heading
games, in a
sub-tree named
arcade.
If passthrough is present,
packages which for some reason lack a true Section
(for instance, virtual packages) will be passed
directly to the next level of grouping without first
being placed in sub-categories.
status
Groups packages into the following categories:
Security UpdatesUpgradableNewInstalledNot InstalledObsolete and Locally CreatedVirtualsource
Groups packages according to their source package name.
tag(facet)
Groups packages according to the Tag information
stored in the Debian package files. If
facet is provided, then
only tags corresponding to that facet will be
displayed, and packages lacking this facet will be
hidden; otherwise, all packages will be displayed at
least once (with tagless packages listed separately
from packages that have tags).
For more information on debtags, see .
task
Creates a tree called Tasks which contains the
available tasks (information on tasks is read from
debian-tasks.desc in the
package tasksel). The rule
following task will create its
categories as siblings of Tasks.
versions
This is a terminal rule.
Creates standard package items which can be expanded
to reveal the versions of the package.
Customizing how packages are sorted
By default, packages in the package list or in the output
of aptitude
search are sorted by name. However, it
is often useful to sort them according to different
criteria (for instance, package size), and &aptitude;
allows you to do just that by modifying the
sorting policy.
Like the grouping policy described in the previous section,
the sorting policy is a comma-separated list. Each item
in the list is the name of a sorting rule; if packages are
equal according to the first rule, the second rule is
used to sort them, and so on. Placing a tilde character
(~) in front of a rule reverses the
usual meaning of that rule. For instance,
priority,~name will sort packages by
priority, but packages with the same priority will be
placed in reverse order according to name.
To change the sorting policy for an active package list,
press S. To change the default sorting
for all package lists, set the configuration option
Aptitude::UI::Default-Sorting.
To change the sorting policy for aptitude search,
use the --sort
command-line option.
The available rules are:
installsize
Sorts packages by the estimated amount of size they
require when installed.
name
Sorts packages by name.
priority
Sorts packages by priority.
version
Sorts packages according to their version number.
Customizing keybindings
The keys used to activate commands in &aptitude; can be
customized in the configuration file. Every
command has an associated configuration variable under
Aptitude::UI::Keybindings; to change the
keystroke bound to a command, just set the corresponding
variable to the keystroke. For instance, to make the key
s perform a search, set
Aptitude::UI::Keybindings::Search to
s. You can require the Control key to
be pressed by placing C- in front of
the key: for instance, using C-s
instead of s would bind Search to
Controls
instead of s. Finally, you can bind a
command to several keys at once using a comma-separated
list: for instance, using s,C-s would
cause both s and Controls
to perform a search.
The following commands can be bound to keys by setting the
variable
Aptitude::UI::Keybindings::command,
where command is the name of the
command to be bound:
CommandDefaultDescriptionApplySolution!
If packages are broken and &aptitude; has suggested
a solution to the problem, immediately apply the
solution.
Beginhome,C-a
Move to the beginning of the current display: to the
top of a list, or to the left of a text entry field.
BugReportB
Reports a bug in the currently selected package,
using reportbug.
CancelC-g,escape,C-[
Cancels the current interaction: for instance,
discards a dialog box or deactivates the menu.
ChangelogC
Displays the changelog.Debian
of the currently selected package or package
version.
ChangePkgTreeGroupingG
Changes the grouping policy
of the currently active package list.
ChangePkgTreeLimitl
Changes the limit of the
currently active package list.
ChangePkgTreeSortingS
Changes the sorting
policy of the currently active package list.
ClearAutom
Marks the currently selected package as having been
manually installed.
CollapseAll]
Collapses the selected tree and all its children in
a hierarchical list.
CollapseTreeNo binding
Collapses the selected tree in a hierarchical list.
CommitN
In the hierarchy editor, stores the hierarchy location
of the current package and proceeds to the next
package.
Confirmenter
In dialog boxes, this is equivalent to pressing
Ok; when
interacting with a status-line multiple choice
question, it chooses the default option.
Cycletab
Switches the keyboard focus to the next widget.
CycleNextf6
Switches to the next active view.
CycleOrdero
Cycles through predefined arrangements of the display.
CyclePrevf7
Switches to the previous active view.
DelBOLC-u
Deletes all text between the cursor and the
beginning of the line.
DelBackbackspace,C-h
Deletes the previous character when entering text.
DelEOLC-k
Deletes all text from the cursor to the end of the
line.
DelForwarddelete,C-d
Deletes the character under the cursor when entering text.
Dependenciesd
Displays the dependencies of the currently selected
package.
DescriptionCyclei
When browsing the package list, cycles through the
available views in the information area.
DescriptionDownz
When browsing the package list, scrolls the
information area down one line.
DescriptionUpa
When browsing the package list, scrolls the
information area up one line.
DoInstallRung
If not in a preview screen, display the preview
screen
unless Aptitude::Display-Planned-Action
is false.
; if in a preview screen, perform an
install run.
Downdown,j
Moves down: for instance, scrolls a text display
down or selects the next item in a list.
DpkgReconfigureR
Runs dpkg-reconfigure on the currently selected
package.
DumpResolver*
If packages are broken, writes the current state of
the problem-resolver to a file (for debugging
purposes).
EditHierE
Opens the hierarchy editor.
Endend,C-e
Move to the end of the current display: to the
bottom of a list, or to the right of a text entry
field.
ExamineSolutione
If some packages are broken and &aptitude; has
suggested a solution, display a dialog box with a
detailed description of the proposed solution.
ExpandAll[
Expands the selected tree and all its children in a
hierarchical list.
ExpandTreeNo binding
Expands the selected tree in a hierarchical list.
FirstSolution<
Select the first solution produced by the problem
resolver.
ForbidUpgradeF
Forbids a
package from being upgraded to the currently
available version (or a particular version).
ForgetNewPackagesf
Discards all information about which packages are
new (causes the list of new packages to become
empty).
Help?
Displays the on-line help screen.
HistoryNextdown,C-n
In a line editor with history, moves forwards in
the history.
HistoryPrevup,C-p
In a line editor with history, moves backwards in
the history.
Hold=
Places a package on hold.
Install+
Flags a package for installation.
InstallSingleI
Marks a single package for installation; all other
packages are kept at their current version.
Keep:
Cancels all
installation or removal requests and all holds for a
package.
LastSolution<
Select the last solution produced by the problem
resolver.
Leftleft,h
Moves left: for instance, moves one menu to the left
in the menu bar, or moves the cursor to the left
when editing text.
LevelDownJ
In a hierarchical list, selects the next sibling of
the currently selected item (the next item at the
same level with the same parent).
LevelUpK
In a hierarchical list, selects the previous sibling
of the currently selected item (the previous item at
the same level with the same parent).
MarkUpgradableU
Attempts to upgrade all packages which are not held
back or forbidden from upgrading.
MineFlagSquaref
In Minesweeper, places
or removes a flag on a square.
MineLoadGameL
Loads a Minesweeper game.
MineSaveGameS
Saves a Minesweeper game.
MineSweepSquareNo binding
Sweeps around the current square in Minesweeper.
MineUncoverSquareNo binding
Uncovers the current square in Minesweeper
MineUncoverSweepSquareenter
Uncovers the current square in Minesweeper if it is
covered; otherwise, sweeps around it.
NextPagepagedown,C-f
Moves the current display one page forward.
NextSolution.
Advance the dependency resolver to the next solution.
Non
This key will select the no button in
yes/no dialog boxes.
Parent^
Selects the parent of the selected item in a
hierarchical list.
PrevPagepageup,C-b
Moves the current display one page backward.
PrevSolution,
Return the dependency resolver to the previous solution.
Purge_
Flags the currently selected package to be purged.
PushButtonspace,enter
Activates the currently selected button, or toggles
a checkbox.
Quitq
Close the current view.
QuitProgramQ
Quit the entire program.
RejectBreakHolds
Reject all resolver actions that would break a hold;
equivalent to &resolver-reject-break-holds;.
RefreshC-l
Redraws the screen from scratch.
Remove-
Flags a package for removal.
ReInstallL
Flags the currently selected package to be
reinstalled.
RepeatSearchBackN
Repeats the last search, but searches in the
opposite direction.
ReSearchn
Repeats the last search.
ReverseDependenciesr
Displays packages which depend upon the currently
selected package.
Rightright,l
Moves right: for instance, moves one menu to the
right in the menu bar, or moves the cursor to the
right when editing text.
SaveHierS
In the hierarchy editor, saves the current hierarchy.
Search/
Activate the search function of the
currently active interface element.
SearchBack\
Activate the search backwards function of the
currently active interface element.
SearchBrokenb
In a package tree, search for the next broken
package.
SetAutoM
Marks the current package as having been automatically
installed.
ShowHideDescriptionD
In a package list, toggles whether the information
area is visible.
SolutionActionApprovea
When viewing a solution, marks the currently
selected action as "approved" (it will be included
in future solutions whenever possible).
SolutionActionRejectr
When viewing a solution, marks the currently
selected action as "rejected" (future solutions will
not contain it).
ToggleExpandedenter
Expands or collapses the currently selected tree in
a hierarchical list.
ToggleMenuActiveC-m,f10,C-space
Activates or deactivates the main menu.
UndoC-_,C-u
Cancels the last action, up to when &aptitude; was
started OR the last time you update the package
lists or installed packages.
Upup,k
Moves up: for instance, scrolls a text display
up or selects the previous item in a list.
UpdatePackageListu
Updates the list of packages by fetching new lists
from the Internet if necessary.
Versionsv
Displays the available versions of the currently
selected package.
Yesy
This default may be different in different locales.
This key will select the Yes button
in yes/no dialog boxes.
In addition to letter keys, number keys, and punctuation,
the following special keys can be bound:
Key nameDescriptiona1The A1 key.a3The A3 key.b2The B2 key.backspaceThe Backspace key.backtabThe back-tab keybeginThe Begin key (not Home)break
The break key.
c1The C1 key.c3The C3 key.cancelThe Cancel key.createThe Create key.comma
Comma (,) -- note that because commas are used to
list keys, this is the only way to bind to a comma.
commandThe Command key.copyThe Copy key.deleteThe Delete key.delete_lineThe delete line key.downThe down arrow key.endThe End key.entryThe Enter key.exitThe Exit key.f1, f2, ..., f10The F1 through F10 keys.findThe Find key.homeThe Home key.insertThe Insert key.insert_exitThe insert exit key.clearThe clear key.clear_eolThe clear to end of line key.clear_eosThe clear to end of screen key.insert_lineThe insert line key.leftThe left arrow key.markThe Mark key.messageThe Message key.moveThe Move key.nextThe Next key.openThe Open key.previousThe Previous key.printThe Print key.redoThe Redo key.referenceThe Reference key.refreshThe Refresh key.replaceThe Replace key.restartThe Restart key.resumeThe Resume key.returnThe Return key.rightThe right arrow key.saveThe Save key.scrollfThe scroll forward key.scrollrThe scroll backwards key.selectThe Select key.suspendThe Suspend key.pagedownThe Page Down key.pageupThe Page Up key.spaceThe Space keytabThe Tab keyundoThe Undo key.upThe up arrow key.
In addition to binding keys globally, it is possible to
change key bindings for one particular part (or
domain) of &aptitude;: for instance,
to make Tab the equivalent of the right arrow key in menu
bars, set
Aptitude::UI::Keybindings::Menubar::Right
to tab,right. The
following domains are available:
DomainDescriptionEditLine
Used by line-editing widgets, such as the entry
field in a search dialog.
Menu
Used by drop-down menus.
Menubar
Used by the menu bar at the top of the screen.
Minesweeper
Used by the Minesweeper mode.
MinibufChoice
Used by the multiple-choice prompts that appear if
you have chosen to have some prompts appear in the
status line.
Pager
Used when displaying a file on disk (for instance,
the help text).
PkgNode
Used by packages, trees of packages, package
versions, and package dependencies when they appear
in package lists.
PkgTree
Used by package lists.
Table
Used by tables of widgets (for instance, dialog boxes).
TextLayout
Used by formatted text displays, such as package
descriptions.
Tree
Used by all tree displays (including package lists,
for which it can be overridden by
PkgTree).
Customizing text colors and styles
The colors and visual styles used by &aptitude; to display
text can be extensively customized. Each visual element has
an associated style, which describes the
particular colors and visual attributes that will be used to
display that element. Styles take the form of a list of
color and attribute settings. This list is not necessarily
exhaustive; if some colors or attributes are not explicitly
specified, their values will be taken from the surrounding
visual context. In fact, most visual elements have an
empty style by default.
You can change the contents of a style by creating a
configuration group of the same name in the &apt; or
&aptitude; configuration file. For instance, the
MenuBorder style is used
to draw the visual border around drop-down menus. By
default, this border is drawn bold and white-on-blue.
Placing the following text in the configuration file would
change it to white-on-cyan:
Aptitude::UI::Styles {
MenuBorder {fg white; bg cyan; set bold;};
};
As you can see, a style's configuration group consists of a
sequence of instructions. The general classes of
instructions are:
fgcolor
Sets the text foreground to the given
color. See below for a
list of the colors known to &aptitude;.
bgcolor
Sets the text background to the given
color. See below for a
list of the colors known to &aptitude;.
setattribute
Enables the given text
attribute. See below for a
list of the text attributes known to &aptitude;.
clearattribute
Disables the given text
attribute. See below for a
list of the text attributes known to &aptitude;.
flipattribute
Toggles the given text
attribute: if it is enabled
in the surrounding element, it will be disabled, and
vice versa. See below for a list of the text
attributes known to &aptitude;.
The colors that &aptitude; recognizes are black,
blue, cyan,
green, magenta,
red, white, and
yellow
On some terminals, a yellow background
will actually come out brown.
. In addition, you may specify
default in place of a background color to
use the default terminal background (this could be the
default color, an image file, or even
transparent). The styles that &aptitude;
recognizes are:
blink
Enables blinking text.
bold
Makes the foreground color of the text (or the
background if reverse video is enabled) brighter.
dim
May cause text to be extra-dim on some terminals. No
effect has been observed on common Linux terminals.
reverse
Swaps the foreground and background colors. Many
visual elements flip this attribute to perform common
highlighting tasks.
standout
This enables the best highlighting mode of the
terminal. In xterms it is similar, but
not idential to, reverse video; behavior on other
terminals may vary.
underline
Enables underlined text.
You can select several attributes at once by separating them
with commas; for instance, set
bold,standout;.
As hinted at above, the interpretation of both styles and
text attributes is highly terminal-dependent. You may
need to experiment a bit to find out exactly what some
settings do on your terminal.
The following styles can be customized in &aptitude;:
Customizing the display layout
It is possible to rearrange the &aptitude; package list by
making suitable modifications to the configuration file.
Display elements
The layout is stored in the configuration group
Aptitude::UI::Default-Package-View, and
consists of a list of display elements:
NameType {
Row row;
Column column;
Width width;
Height height;
additional options...
};
This creates a display element named
Name; the type of element
created is determined by Type.
The Row, Column,
Width, and
Height
options must be present; they determine where the display
element is placed. (see below for a detailed
explanation of how display elements are arranged)
For examples of how to change the display layout, see the
theme definitions in the
file
/usr/share/aptitude/aptitude-defaults.
The following types of display elements are available:
Description
This display element will contain the
information area (typically a
description of the currently selected package).
The option PopUpDownKey
gives the name of a keyboard command which will
cause the display element to be shown or hidden.
For instance, setting this to ShowHideDescription
will give the current display element the same
behavior as the default information area. The
option PopUpDownLinked
gives the name of another display element; the
current element will be shown or hidden whenever the
other element is.
MainWidget
This is a placeholder for the main
display element: typically this is the list of
packages. A display layout must contain exactly one
MainWidget element: no more, no
less.
Static
A region of the screen which displays some text,
possibly containing formatting codes as described in
. The text to
display can be given in the Columns
option, or it can be stored in another configuration
variable specified by the ColumnsCfg
option. The color of the text is determined by the
color named by the Color option.
Static items can be displayed and
hidden in the same way as Description
items, using the PopUpDownKey
and PopUpDownLinked
options.
Placement of display elements
The display elements are arranged in a
table. The upper-left corner of an element
is in the cell given by its Row and
Column
options (typically starting from row 0 and column 0, but
this is not required). The width of an element in cells
is given by its Width
option, and its height is given by its Height
option.
Once the display elements are arranged and have been given
an initial amount of space on the screen, there is likely
to be space left over. If there is extra vertical space,
each row containing a display element whose RowExpand
option is true will be allocated a share
of the extra space; similarly, if there is extra
horizontal space, each column containing a display element
whose ColExpand
option is true will be allocated a share
of the extra space.
In the event that there is not enough space, every row and
column whose widgets all have their
RowShrink or
ColShrink
options set to true will be shrunk. If
this is not enough, all rows and columns are shrunk to fit
into the available space.
If a display element is not expanded, but its row or
column is, its alignment is determined by the RowAlign
and ColAlign
options. Setting them to Left,
Right, Top,
Bottom, or Center
will tell &aptitude; where to place the element within the
row or column.
For instance, the following configuration group creates a
static element named
Header, which is three
cells wide and will expand horizontally but not
vertically. It has the same color as other header lines
and uses the standard display format for header lines:
Header Static {
Row 0;
Column 0;
Width 3;
Height 1;
ColExpand true;
ColAlign Center;
RowAlign Center;
Color ScreenHeaderColor;
ColumnsCfg HEADER;
};Display layout option reference
The following options are available for display elements:
ColAlignalignment;alignment must be either
Left, Right,
or Center. If the row containing
the current display element is wider than the
element itself and ColExpand
is false, the element will be
placed within the row according to the value of
alignment.
If this option is not present, it defaults to
Left.
ColExpandtrue|false;
If this option is set to true,
the column containing this display element will be
allocated a share of any extra horizontal space that
is available.
If this option is not present, it defaults to
false.
Colorcolorname;
This option applies to Static
elements. colorname is
the name of a color (for instance, ScreenStatusColor)
which should be used as the default
color for this display element.
If this option is not present, it defaults to
DefaultWidgetBackground.
ColShrinktrue|false;
If this option is set to true on
each element in a column and there is not enough
horizontal space, the column will be shrunk as
necessary to fit the available space. Note that a
column may be shrunk even if
ColShrink is
false; it simply indicates that
&aptitude; should try shrinking a particular column
before shrinking other columns.
If this option is not present, it defaults to
false.
Columncolumn;
Specifies the leftmost
column containing this
display element.
Columnsformat;
This option applies to Static
display elements for which the ColumnsCfg
option is not set. It sets the displayed contents
of the status item; it is a format string as
described in .
ColumnsCfgHEADER|STATUS|name;
This option applies to Static
display elements. It sets the display format of the
current element to the value of another
configuration variable: if it is
HEADER or
STATUS, the options
Aptitude::UI::Package-Header-Format
and Aptitude::UI::Package-Status-Format,
repectively, are used; otherwise, the option
name is used.
If this option is not present, the value of the
Columns option is
used to control the contents of the static item.
Heightheight;
Specifies the height of
the current display element.
PopUpDownKeycommand;
This option applies to Description
and Static
display elements.
command is the name of a
keyboard command (for instance, ShowHideDescription).
When this key is pressed, the display element will
be hidden if it is visible, and displayed if it is
hidden.
PopUpDownLinked
element;
This option applies to Description
and Static
display elements.
element is the name of a
display element. When
element is displayed, the
current element will also be displayed; when
element is hidden, the
current element will also be hidden.
Rowrow;
Specifies the uppermost
row containing this
display element.
RowAlignalignment;alignment must be either
Top, Bottom,
or Center. If the row containing
the current display element is taller than the
element itself and RowExpand
is false, the element will be
placed within the row according to the value of
alignment.
If this option is not present, it defaults to
Top.
RowExpandtrue|false;
If this option is set to true,
the row containing this display element will be
allocated a share of any extra vertical space that
is available.
If this option is not present, it defaults to
false.
RowShrinktrue|false;
If this option is set to true on
each element in a row and there is not enough
vertical space, the row will be shrunk as necessary
to fit the available space. Note that a row may be
shrunk even if RowShrink is
false; it simply indicates that
&aptitude; should try shrinking a particular row
before shrinking other rows.
If this option is not present, it defaults to
false.
Visible true|false;
If set to false, this display
element will initially be hidden. Presumably only
useful in conjunction with PopUpDownKey
and/or PopUpDownLinked.
If this option is not present, it defaults to
true.
Widthwidth;
Specifies the width of
the current display element.
Configuration file referenceConfiguration file format
In its basic form, &aptitude;'s configuration file is a
list of options and their values. Each line of the file
should have the form
OptionValue;:
for instance, the following line in the configuration file
sets the option Aptitude::Theme to
Dselect.
Aptitude::Theme "Dselect";
An option can contain other options if they
are written in curly braces between the option and the
semicolon following it, like this:
Aptitude::UI {
Package-Status-Format "";
Package-Display-Format "";
};
An option that contains other options is sometimes called
a group. In fact, the double
colons that appear in option names are actually a
shorthand way of indicating containment: the option
Aptitude::UI::Default-Grouping is
contained in the group Aptitude::UI,
which itself is contained in the group
Aptitude. Thus, if you wanted to, you
could set this option to "" as follows:
Aptitude {
UI {
Default-Grouping "";
};
};
For more information on the format of the configuration
file, see the manual page
apt.conf5.
Locations of configuration files
&aptitude;'s configuration is read from the following
sources, in order:
Configuration file options specified on the command-line.
The user's configuration file,
~/.aptitude/config. This file is
overwritten when the user modifies settings in the
Options menu.
The system configuration file,
/etc/apt/apt.conf.
The system configuration fragment files,
/etc/apt/apt.conf.d/*.
The file specified by the APT_CONFIG
environment variable (if any).
Default values stored in
/usr/share/aptitude/aptitude-defaults.
Default values built into &aptitude;.
When an option is being checked, these sources are
searched in order, and the first one that provides a value
for the option is used. For instance, setting an option
in /etc/apt/apt.conf will override
&aptitude;'s defaults for that option, but will not
override user settings in
~/.aptitude/config.
Available configuration options
The following configuration options are used by
&aptitude;. Note that these are not the only available
configuration options; options used by the underlying
&apt; system are not listed here. See the manual pages
apt8
and
apt.conf5
for information on &apt; options.
OptionDefaultDescriptionApt::AutoRemove::RecommendsImportanttrue
If this option is true, then
&aptitude; will not consider packages to be unused
(and thus will not automatically remove them) as long
as any installed package recommends them, even if
Apt::Install-Recommends
is false. For more information,
see .
Apt::AutoRemove::SuggestsImportantfalse
If this option is true, then
&aptitude; will not consider packages to be unused
(and thus will not automatically remove them) as long
as any installed package suggests them. For more
information, see .
Apt::Get::List-Cleanuptrue
A synonym for Apt::List-Cleanup.
If either of these options is set to
false, &aptitude; will not delete
old package list files after downloading a new set of
package lists.
Apt::List-Cleanuptrue
A synonym for Apt::Get::List-Cleanup.
If either of these options is set to
false, &aptitude; will not delete
old package list files after downloading a new set of
package lists.
Apt::Install-Recommendstrue
If this option is true and
Aptitude::Auto-Install is
true, then whenever you mark a
package for installation, &aptitude; will also mark
the packages it recommends for installation.
Furthermore, if this option is
true, &aptitude; will not consider
packages to be unused (and thus will not automatically
remove them) as long as any installed package
reommends them. For more information, see and .
Aptitude::Allow-Null-Upgradefalse
Normally, if you try to start an install run when no
actions will be performed, &aptitude; will print a
warning and return to the package list. If this
option is true, &aptitude; will
continue to the preview screen whenever there are
upgradable packages, rather than displaying a reminder
about the &actions-upgrade; command.
Aptitude::Always-Use-Safe-Resolverfalse
If this option is true, aptitude's
command-line actions will always use a
safe dependency resolver, as if --safe-resolver
had been passed on the command line.
Aptitude::Autoclean-After-Updatefalse
If this option is true, &aptitude;
will clean up obsolete files (see &actions-clean-obs;)
every time you update the package list.
Aptitude::Auto-Fix-Brokentrue
If this option is false,
&aptitude; will ask for permission before
attempting to fix any broken packages.
Aptitude::Auto-Installtrue
If this option is true, &aptitude;
will automatically attempt to fulfill the dependencies
of a package when you mark a package to be installed
or upgraded.
Aptitude::Auto-Install-Remove-Okfalse
If this option is true, &aptitude;
will automatically remove conflicting packages when
you mark a package to be installed or upgraded.
Normally these conflicts are flagged and you must
handle them manually.
Aptitude::Auto-Upgradefalse
If this option is true,
&aptitude; will automatically flag all
upgradable packages for upgrade when the program
starts, as if you had issued the command
&actions-upgrade;.
Aptitude::CmdLine::Always-Promptfalse
In command-line mode, if this is set, &aptitude;
will always prompt before starting to install or
remove packages, even if the prompt would
normally be skipped. This is equivalent to the
-P command-line option.
Aptitude::CmdLine::Assume-Yesfalse
In command-line mode, if this option is
true, &aptitude; will act as
if the user had answered yes to
every prompt, causing most prompts to be
skipped. This is equivalent to the
-y command-line option.
Aptitude::CmdLine::Disable-Columnsfalse
If this option is enabled, the results of command-line
searches (performed via aptitude
search) will not be formatted into
fixed-width columns or truncated to the screen width.
This is equivalent to the --disable-columns
command-line option.
Aptitude::CmdLine::Download-Onlyfalse
In command-line mode, if this option is
true, &aptitude; will
download package files but not install them.
This is equivalent to the -d
command-line option.
Aptitude::CmdLine::Fix-Brokenfalse
In command-line mode, if this option is
true, &aptitude; will be more
aggressive when attempting to fix the
dependencies of broken packages. This is
equivalent to the -f
command-line option.
Aptitude::CmdLine::Fix-Missingfalse
In command-line mode, if a package is unavailable of
fails to download to correctly and this option is
true, &aptitude; will try to
continue installing other packages without it. The
package will still be marked for later installation,
as though --schedule-only had been
used. Command-line Option: --fix-missing.
Aptitude::CmdLine::Versions-Group-By
Set to auto,
none, package,
or source-package to control
whether and how the output of aptitude
versions is grouped. Equivalent to
the command-line option --group-by
(see its documentation for more description of what
the values mean).
Aptitude::CmdLine::Ignore-Trust-Violationsfalse
In command-line mode, causes &aptitude; to ignore the
installation of untrusted
packages. This is a synonym for
Apt::Get::AllowUnauthenticated.
Aptitude::CmdLine::Package-Display-Format%c%a%M %p# - %d#
This is a format string, as described in , which is used to
display the results of a command-line search.
This is equivalent to the -F
command-line option.
Aptitude::CmdLine::Package-Display-Width
This option gives the width in characters for
which command-line search results should be
formatted. If it is empty (the default; ie,
""), search results will be
formatted for the current terminal size, or for
an 80-column display if the terminal size cannot
be determined.
Aptitude::CmdLine::Progress::Percent-On-Rightfalse
This option controls whether command-line progress
indicators display the percentage on the left-hand
side of the screen, in the same style as &apt-get;, or
on the right-hand side (the default). This option
does not affect download progress indicators.
Aptitude::CmdLine::Progress::Retain-Completedfalse
If this value is false, then
command-line progress indicators will be deleted and
overwritten once the task they represent is completed.
If it is true, then they will be
left on the terminal. This option does not affect
download progress indicators.
Aptitude::CmdLine::Request-Strictness10000
When run in command-line mode, if dependency problems
are encountered, &aptitude; will add this value to the
problem resolver score of each action that you
explicitly request.
Aptitude::CmdLine::Resolver-Debugfalse
In command-line mode, if this option is
true, &aptitude; will print
extremely verbose information while attempting to
resolve broken dependencies. As the name suggests,
this option is primarily meant to aid in debugging the
problem resolver.
Aptitude::CmdLine::Resolver-Dump
In command-line mode, if it is necessary to resolve
broken dependencies and this option is set to the name
of a writable file, the resolver state will be dumped
to this file before any calculations are undertaken.
Aptitude::CmdLine::Resolver-Show-Stepsfalse
If this option is true, then a
dependency solution will be displayed as a sequence of
resolutions of individual dependencies; for instance,
wesnoth depends upon wesnoth-data (=
1.2.4-1) -> installing wesnoth-data 1.2.4-1
(unstable). To toggle between the
two display modes, press o at the
prompt Accept this solution?.
Aptitude::CmdLine::Show-Depsfalse
In command-line mode, if this option is
true, &aptitude; will display
a brief summary of the dependencies (if any)
relating to a package's state. This is
equivalent to the -D
command-line option.
Aptitude::CmdLine::Show-Size-Changesfalse
In command-line mode, if this option is
true, &aptitude; will display
the expected change in the amount of space used
by each package. This is equivalent to the
-Z command-line option.
Aptitude::CmdLine::Why-Display-Modeno-summary
This option sets the default value of the command-line
argument --show-summary.
See the documentation of --show-summary
for a list of the allowed values of this option and
their meanings.
Aptitude::CmdLine::Show-Versionsfalse
In command-line mode, if this option is
true, &aptitude; will display
the version of a package that is being installed
or removed. This is equivalent to the
-V command-line option.
Aptitude::CmdLine::Show-Whyfalse
In command-line mode, if this option is
true, &aptitude; will display the
manually installed packages that require each
automatically installed package, or the manually
installed packages that cause a conflict with each
automatically removed package. This is equivalent to
the -W command-line option and
displays the same information you can access via
aptitude why or by pressing
i in a package list.
Aptitude::CmdLine::Sortingname,version
Specify the order in which output from the search
and versions
commands should be displayed. For instance, passing
installsize for
order will list packages in
order according to their size when installed (see the
section Customizing how packages
are sorted in the &aptitude; reference
manual for more information).
Aptitude::CmdLine::Version-Display-Format%c%a%M %p# %t %i
This is a format string, as described in , which is used to display
the output of aptitude versions.
This is equivalent to the -F
command-line option.
Aptitude::CmdLine::Versions-Show-Package-Names
Set to always,
auto, or never
to control when package names are displayed in the
output of aptitude
versions. Equivalent to the
command-line option --show-package-names
(see its documentation for more description of what
the values mean).
Aptitude::Safe-Resolver::Show-Resolver-Actionsfalse
If this option is enabled, then when the
safe dependency resolver has been
activated via --safe-resolver
or because the command-line action is safe-upgrade,
it will display a summary of the actions taken by the
resolver before showing the installation preview.
Equivalent to the command-line option --show-resolver-actions.
Aptitude::Screenshot::IncrementalLoadLimit16384
The minimum size in bytes at which &aptitude; will begin
to display screenshots incrementally. Below this
size, screenshots will not appear until they are fully
downloaded.
Aptitude::Screenshot::Cache-Max4194304
The maximum number of bytes of screenshot data that
&aptitude; will store in memory for screenshots that are
not currently being displayed. The default is four
megabytes.
Aptitude::CmdLine::SimulatefalseThis option is deprecated; use
Aptitude::Simulate
instead. In command-line mode, causes
&aptitude; to just display the actions that would be
performed (rather than actually performing them); in
the visual interface, causes &aptitude; to start in
read-only mode regardless of whether you are &root; or
not. This is equivalent to the -s
command-line option.
Aptitude::CmdLine::Verbose0
This controls how verbose the command-line mode
of &aptitude; is. Every occurrence of the
-v command-line option adds 1
to this value.
Aptitude::CmdLine::Visual-Previewfalse
If this option is true,
&aptitude; will enter its visual mode to display
the preview of an installation run and to
download packages.
Aptitude::Delete-Unusedtrue
If this option is true,
automatically installed packages which are no
longer required will be automatically removed.
For more information, see .
Aptitude::Delete-Unused-Pattern
Deprecated alias for Aptitude::Keep-Unused-Pattern.
If Aptitude::Keep-Unused-Pattern is
unset or set to an empty string, the value of this
configuration option will override it. Otherwise,
Aptitude::Delete-Unused-Pattern is
ignored.
Aptitude::Display-Planned-Actiontrue
If this option is true,
&aptitude; will display a preview screen before
actually carrying out the actions you have
requested.
Aptitude::Forget-New-On-Installfalse
If this option is true,
&aptitude; will clear the list of new packages
whenever you install, upgrade, or remove
packages, as if you had issued the command
&actions-forget;.
Aptitude::Forget-New-On-Updatefalse
If this option is true,
&aptitude; will clear the list of new packages
whenever the package list is updated, as if you
had issued the command &actions-forget;.
Aptitude::Get-Root-Commandsu:/bin/su
This option sets the external command that &aptitude;
will use to switch to the &root; user (see ). It has the form
protocol:command.
protocol must be either
su or sudo; it
determines how &aptitude; invokes the program when it
wants to gain &root; privileges. If
protocol is
su, then
command -c
arguments is used
to become &root;; otherwise, &aptitude; uses
commandarguments. The
first word in command is
the name of the program that should be invoked;
remaining words are treated as arguments to that
program.
Aptitude::Ignore-Old-Tmpfalse
Old versions of &aptitude; created a directory
~/.aptitude/.tmp which is no
longer necessary. If the directory exists and
Aptitude::Ignore-Old-Tmp is
true, &aptitude; will ask you
whether to remove this directory. This option is
automatically set to true after you
reply. On the other hand, if the directory does not
exist, this option is set to false
so that you will be notified if it reappears.
Aptitude::Ignore-Recommends-Importantfalse
In previous versions of &aptitude;, the setting
Aptitude::Recommends-Important
caused recommendations to be installed automatically,
the same way that Apt::Install-Recommends
does today. If this option is set to
false and
Aptitude::Recommends-Important is
also set to false, &aptitude; will
set Apt::Install-Recommends
to false and set
Aptitude::Ignore-Recommends-Important
to true on startup.
Aptitude::Keep-Recommendsfalse
This is an obsolete option; use Apt::AutoRemove::Recommends-Important
instead. Setting this option to
true has the same effect as setting
Apt::AutoRemove::Recommends-Important
to true.
Aptitude::Keep-Suggestsfalse
This is an obsolete option; use Apt::AutoRemove::Suggests-Important
instead. Setting this option to
true has the same effect as setting
Apt::AutoRemove::Suggests-Important
to true.
Aptitude::Keep-Unused-Pattern
If Aptitude::Delete-Unused
is true, only unused packages which
do not match this pattern (see
) will be removed.
If this option is set to an empty string (the
default), all unused packages will be removed.
Aptitude::LockFile/var/lock/aptitude
A file that will be fcntl-locked to ensure that at
most one &aptitude; process can modify the cache at
once. In normal circumstances, you should never need
to modify this; it may be useful for debugging.
Note: if &aptitude; complains
that it cannot acquire a lock, this is
not because the lock file needs
to be deleted. fcntl locks are managed by the kernel
and will be destroyed when the program holding them
terminates; failure to acquire the lock means that
another running program is using it!
Aptitude::Log/var/log/aptitude
If this is set to a nonempty string, &aptitude; will
log the package installations, removals, and upgrades
that it performs. If the value of
Aptitude::Log begins with a pipe
character (ie, |),
the remainder of its value is used as the name of a
command into which the log will be piped: for
instance, |mail -s 'Aptitude install run'
root will cause the log to be emailed to
&root;. To log to multiple files or commands, you may
set this option to a list of log targets.
Aptitude::Logging::File
If this is set to a nonempty string, &aptitude; will
write logging messages to it; setting it to
- causes logging
messages to be printed to standard output. This
differs from the setting Aptitude::Log:
that file is used to log installations and removals,
whereas this file is used to log program events,
errors, and debugging messages (if enabled). This
option is equivalent to the command-line argument
--log-file.
See also Aptitude::Logging::Levels.
Aptitude::Logging::Levels(empty)
This option is a group whose members control which log
messages are written. Each entry is either
level, to
set the global log level (the log level of the root
logger) to the given level,
or
category:level,
where category is the
category of messages to modify (such as
aptitude.resolver.hints.match) and
level is the lowest log
level of messages in that category that should be
displayed. Valid log levels are
fatal,
error,
warn,
info,
debug, and
trace. The
command-line option --log-level
can be used to set or override any log level.
Aptitude::Parse-Description-Bulletstrue
If this option is enabled, &aptitude; will attempt
to automatically detect bulleted lists in package
descriptions. This will generally improve how
descriptions are displayed, but it is not entirely
backwards-compatible; some descriptions might be
formatted less attractively when this option is
true than when it is
false.
Aptitude::Pkg-Display-Limit
The default filter applied to the package list;
see for
details about its format.
Aptitude::ProblemResolver::Allow-Break-Holdsfalse
If this option is set to true, the
problem resolver will consider breaking package holds
or installing forbidden versions in order to resolve a
dependency. If it is set to false,
these actions will be rejected by default, although
you can always enable them manually (see ).
Aptitude::ProblemResolver::BreakHoldScore-300
How much to reward or penalize solutions that change
the state of a held package or install a forbidden
version. Note that unless Aptitude::ProblemResolver::Allow-Break-Holds
is set to true, the resolver will never break a hold
or install a forbidden version unless it has explicit
permission from the user.
Aptitude::ProblemResolver::Break-Hold-Level50000
The safety cost assigned to actions that break a hold
set by the user (by upgrading a held package or by
installing a forbidden version of a package). See
for a description of safety costs.
Aptitude::ProblemResolver::BrokenScore-100
How much to reward or penalize prospective solutions
based on the number of dependencies they break. For
each dependency broken by a possible solution, this
many points are added to its score; typically this
should be a negative value.
Aptitude::ProblemResolver::DefaultResolutionScore400
How much to reward or penalize prospective solutions
based on how many default resolutions
for currently unsatisfied dependencies they install.
The default resolution is the resolution that
apt-get install or
the immediate dependency
resolver would pick. The score is only
applied for dependencies and recommendations whose
targets are not currently installed.
Aptitude::ProblemResolver::Discard-Null-Solutiontrue
If this option is true, &aptitude;
will never suggest cancelling all of your proposed
actions in order to resolve a dependency problem.
Aptitude::ProblemResolver::EssentialRemoveScore-100000
How much to reward or penalize solutions that remove
an Essential package.
Aptitude::ProblemResolver::Remove-Essential-Level60000
The safety cost assigned to actions that remove an
Essential package. See for a
description of safety costs.
Aptitude::ProblemResolver::ExtraScore-1
Any version of a package whose Priority is
extra will have this many points added
to its score.
Aptitude::ProblemResolver::FullReplacementScore500
Removing a package and installing another package that
fully replaces it (i.e., conflicts with it, replaces
it, and provides it) is assigned this score.
Aptitude::ProblemResolver::FutureHorizon50
How many steps the resolver should run
after finding the first solution. Although &aptitude;
attempts to generate better solutions before worse
solutions, sometimes it is unable to do so; this
setting causes the resolver to briefly continue
searching for a better solution before displaying its
results, rather than stopping immediately after it
finds the first solution.
Aptitude::ProblemResolver::Hints(empty)
This option is a group whose members are used to
configure the problem resolver. Each item in the
group is a string describing an action that should be
applied to one or more packages. The syntax for each
hint, and the effect that hints have, may be found in
.
Aptitude::ProblemResolver::ImportantScore5
Any version of a package whose Priority is
important will have this many points
added to its score.
Aptitude::ProblemResolver::Infinity1000000
A maximum score for potential
solutions. If a set of actions has a score worse than
-Infinity, it will be
discarded immediately.
Aptitude::ProblemResolver::InstallScore-20
How much weight the problem resolver should give to
installing a package, if the package is not already
going to be installed.
Aptitude::ProblemResolver::Keep-All-Level20000
The safety cost assigned to the single solution that
cancels all of the actions selected by the user. See
for a description of safety costs.
Aptitude::ProblemResolver::KeepScore0
How much weight the problem resolver should give to
keeping a package in its current state, if that
package is not already going to be kept in its current
state.
Aptitude::ProblemResolver::NonDefaultScore-40
How much weight the problem resolver should give to
installing a non-default version of the package (one
that is not the current version and not the
candidate version).
Aptitude::ProblemResolver::Non-Default-Level50000
The safety cost assigned to actions that install
non-default versions of a package. For instance, if
version 5 of a package is installed, versions 6, 7,
and 8 are available, and version 7 is the default
version, then versions 6 and 8 will be given a safety
cost that is at least this high. See for a
description of safety costs.
Aptitude::ProblemResolver::OptionalScore1
Any version of a package whose Priority is
optional will have this many points
added to its score.
Aptitude::ProblemResolver::PreserveAutoScore0
How much weight the problem resolver should give to
preserving automatic installations or removals.
Aptitude::ProblemResolver::PreserveManualScore60
How much weight the problem resolver should give to
preserving explicit user selections.
Aptitude::ProblemResolver::RemoveScore-300
How much weight the problem resolver should give to
removing a package (if it is not already marked for
removal).
Aptitude::ProblemResolver::Remove-Level10000
The safety cost assigned to actions that remove a
package. See for a
description of safety costs.
Aptitude::ProblemResolver::RequiredScore4
Any version of a package whose Priority is
required will have this many points
added to its score.
Aptitude::ProblemResolver::ResolutionScore50
In addition to all other scoring factors, proposed
solutions that actually resolve all unsatisfied
dependencies are awarded this many extra points.
Aptitude::ProblemResolver::Safe-Level10000
The safety cost assigned to actions that install the
default version of a package, upgrade a package to its
default version, or cancel installing or upgrading a
package. Solutions assigned this cost could be
generated by aptitude
safe-upgrade. See for
a description of safety costs.
Aptitude::ProblemResolver::SolutionCostsafety,priority
Describes how to determine the cost of a solution.
See for
a description of what solution costs are, what they
do, and the syntax used to specify them. If the cost
cannot be parsed, an error is issued and the default
cost is used instead.
Aptitude::ProblemResolver::StandardScore3
Any version of a package whose Priority is
standard will have this many points
added to its score.
Aptitude::ProblemResolver::StepLimit5000
The maximum number of steps which
should be performed by the problem resolver on each
attempt to find a solution to a dependency problem.
Decreasing this number will make &aptitude;
give up sooner; increasing it will
permit the search for a solution to consume much more
time and memory before it is aborted. Setting
StepLimit to 0 will disable the
problem resolver entirely. The default value is large
enough to accomodate commonly encountered situations,
while preventing &aptitude; from blowing
up if an overly complicated problem is
encountered. (note: this applies only to command-line
searches; in the visual interface, the resolver will
continue working until it reaches a solution)
Aptitude::ProblemResolver::StepScore70
How much to reward or penalize prospective solutions
based on their length. For each action performed by a
solution, this many points are added to its score.
The larger this value is, the more the resolver tends
to stick with its first choice rather than considering
alternatives; this will cause it to produce a solution
more quickly, but the solution might be of slightly
lower quality than it would otherwise be.
Aptitude::ProblemResolver::Trace-Directory
If this value is set, then each time the problem
resolver produces a solution, a stripped-down version
of the package state sufficient to reproduce that
solution is written to the given file. If
Aptitude::ProblemResolver::Trace-File
is also set, the same information will also be written
to the trace file. Trace directories are more
transparent than trace files, and are more suitable
for, e.g., including in source trees as test cases.
Aptitude::ProblemResolver::Trace-File
If this value is set, then each time the problem
resolver produces a solution, a stripped-down version
of the package state sufficient to reproduce that
solution is written to the given file. If
Aptitude::ProblemResolver::Trace-Directory
is also set, the same information will also be written
to the trace directory. A trace file is simply a
compressed archive of a trace directory; it will take
less space than the trace directory and is suitable
for transmission over a network.
Aptitude::ProblemResolver::UndoFullReplacementScore-500
Installing a package and removing another package that
fully replaces it (i.e., conflicts with it, replaces
it, and provides it) is assigned this score.
Aptitude::ProblemResolver::UnfixedSoftScore-200
How much to reward or penalize leaving a Recommends
relationship unresolved. This should typically be
less than RemoveScore, or &aptitude; will tend to
remove packages rather than leaving their
Recommendations unfixed. See for details.
Aptitude::ProblemResolver::UpgradeScore0
How much weight the problem resolver should give to
upgrading (or downgrading) a package to its candidate
version, if the package was not already going to be
upgraded.
Aptitude::Purge-Unusedfalse
If this option is true and
Aptitude::Delete-Unused
is also true, then packages which
are unused will be purged from
the system, removing their configuration files and
perhaps other important data. For more information
about which packages are considered to be
unused, see . THIS OPTION CAN
CAUSE DATA LOSS! DO NOT ENABLE IT UNLESS YOU KNOW
WHAT YOU ARE DOING!Aptitude::Recommends-Importanttrue
This is an obsolete configuration option that has been
superseded by Apt::Install-Recommends.
On startup, &aptitude; will copy
Aptitude::Recommends-Important (if
it exists) to
Apt::Install-Recommends and then
clear
Aptitude::Recommends-Important in
your user configuration file.
Aptitude::Safe-Resolver::No-New-Installsfalse
If this option is true, then when
the safe dependency resolver has been
activated via --safe-resolver
or by using the safe-upgrade
command-line action, the resolver will not be allowed
to install packages that are not currently installed.
Aptitude::Safe-Resolver::No-New-Upgradesfalse
If this option is enabled, then when the
safe dependency resolver has been
activated via --safe-resolver
or by using the safe-upgrade
command-line action, the resolver will not be allowed
to resolve dependencies by upgrading packages.
Aptitude::Sections::DescriptionsSee $prefix/share/aptitude/section-descriptions
This option is a group whose members define the
descriptions displayed for each section when using the
section package
hierarchy grouping policy. Descriptions are assigned
to section trees based on the last component of the
name: for instance, a member of this group named
games will be used
to describe the Sections
games,
non-free/games, and
non-free/desktop/games.
Within the text of section descriptions, the string
\n will be replaced
by a line-break, and the string
'' will be replaced
by a double-quote character.
Aptitude::Sections::Top-Sections"main"; "contrib"; "non-free"; "non-US";
A configuration group whose elements are the names of
the top-level archive sections. The
topdir,
subdir, and
subdirs grouping
policies use this list to interpret Section fields: if
the first path element of a package's Section is
not contained in this list, or if
its Section has only one element, then the package
will be grouped using the first member of this list as
its first path element. For example, if the first
member of Top-Sections is
main, then a package
whose Section is
games/arcade will be
treated as if its Section field were
main/games/arcade.
Aptitude::Simulatefalse
In command-line mode, causes &aptitude; to just
display the actions that would be performed (rather
than actually performing them); in the visual
interface, causes &aptitude; to start in read-only
mode regardless of whether you are &root; or not.
This is equivalent to the -s
command-line option.
Aptitude::Spin-Interval500
The number of milliseconds to delay in between
updating the spinner that appears while
the problem resolver is running.
Aptitude::Suggests-Importantfalse
This is an obsolete option; use Apt::AutoRemove::Suggests-Important
instead. Setting this option to
true has the same effect as setting
Apt::AutoRemove::Suggests-Important
to true.
Aptitude::Suppress-Read-Only-Warningfalse
If this option is false, &aptitude;
will display a warning the first time that you attempt
to modify package states while &aptitude; is in
read-only mode.
Aptitude::Theme
The theme that &aptitude; should use; see for more information.
Aptitude::Track-Dselect-Statetrue
If this option is set to
true, &aptitude; will attempt
to detect when a change to a package's state has
been made using &dselect; or
dpkg: for instance, if you
remove a package using dpkg,
&aptitude; will not try to reinstall it. Note
that this may be somewhat buggy.
Aptitude::UI::Advance-On-Actionfalse
If this option is set to
true, changing a package's
state (for instance, marking it for
installation) will cause &aptitude; to advance
the highlight to the next package in the current
group.
Aptitude::UI::Auto-Show-Reasonstrue
If this option is set to
true, selecting a package
which is broken or which appears to be causing
other packages to be broken will cause the
information area to automatically display some
reasons why the breakage might be occuring.
Aptitude::UI::Default-Groupingfilter(missing),status,section(subdirs,passthrough),section(topdir)
Sets the default grouping policy used for
package lists. See for additional
information on grouping policies.
Aptitude::UI::Default-Package-View
This option is a group whose members define the
default layout of &aptitude;'s display. See
for more
information.
Aptitude::UI::Default-Preview-Groupingaction
Sets the default grouping policy used for
preview screens. See for additional
information on grouping policies.
Aptitude::UI::Default-Sortingname
The default sorting policy of package views. See
for more
information.
Aptitude::UI::Description-Visible-By-Defaulttrue
When a package list is first displayed, the
information area (which typically contains the
long description of the current package) will be
visible if this option is
true and hidden if it is
false.
Aptitude::UI::Exit-On-Last-Closetrue
If this option is true,
closing all the active views will quit
&aptitude;; otherwise, &aptitude; will not exit
until you issue the command &actions-quit;. See
for more information.
Aptitude::UI::Fill-Textfalse
If this option is true,
&aptitude; will format descriptions so that each
line is exactly the width of the screen.
Aptitude::UI::Flat-View-As-First-Viewfalse
If this option is true,
&aptitude; will display a flat view on startup
instead of the default view.
Aptitude::UI::HelpBartrue
If this option is true, a
line of information about important keystrokes
will be displayed at the top of the screen.
Aptitude::UI::Incremental-Searchtrue
If this option is true,
&aptitude; will perform
incremental searches: as you type
the search pattern, it will search for the next
package matching what you have typed so far.
Aptitude::UI::InfoAreaTabsfalse
If this option is true, &aptitude;
will display tabs at the top of the information area
(the pane at the bottom of the screen) describing the
different modes the area can be set to.
Aptitude::UI::Keybindings
This is a group whose members define the
connections between keystrokes and commands in
&aptitude;. For more information, see .
Aptitude::UI::Menubar-Autohidefalse
If this option is set to
true, the menu bar will be
hidden while it is not in use.
Aptitude::UI::Minibuf-Download-Barfalse
If this option is set to
true, &aptitude; will use a
less obtrusive mechanism to display the progress
of downloads: a bar at the bottom of the screen
will appear which displays the current download
status. While the download is active, pressing
q will abort it.
Aptitude::UI::Minibuf-Promptsfalse
If this option is true, some
prompts (such as yes/no and multiple-choice
prompts) will be displayed at the bottom of the
screen instead of in dialog boxes.
Aptitude::UI::New-Package-Commandstrue
If this option is set to
false, commands such as
&package-install; will have the same deprecated
behavior that they did in antique versions of
&aptitude;.
Aptitude::UI::Package-Display-Format%c%a%M %p %Z %v %V
This option controls the format string used to
display packages in package lists. For more
information on format strings, see .
Aptitude::UI::Package-Header-Format%N %n #%B %u %o
This option controls the format string used to
display the header line of package lists (ie,
the line that appears between the package list
and the menu bar). For more
information on format strings, see .
Aptitude::UI::Package-Status-Format%d
This option controls the format string used to
display the status line of package lists (ie,
the line that appears between the package list
and the information area). For more
information on format strings, see .
Aptitude::UI::Pause-After-DownloadOnlyIfError
If this option is true, &aptitude;
will display a message after it finishes downloading
packages, asking you if you want to continue with the
installation. If it is
OnlyIfError, a message will only be
displayed if a download failed. Otherwise, if the
option is set to false, &aptitude;
will immediately proceed to the next screen after
completing a download.
Aptitude::UI::Preview-Limit
The default filter applied to the preview screen;
see for
details about its format.
Aptitude::UI::Prompt-On-Exittrue
If this option is true,
&aptitude; will display a confirmation prompt
before shutting down.
Aptitude::UI::Styles
This is a configuration group whose contents define
what textual styles &aptitude; uses to display
information. For more information, see .
Aptitude::UI::ViewTabstrue
If this option is set to false,
&aptitude; will not display tabs
describing the currently active views at the top of
the screen.
Aptitude::Warn-Not-Roottrue
If this option is true,
&aptitude; will detect when you need &root;
privileges to do something, and ask you whether
you want to switch to the &root; account if you
aren't &root; already. See for more
information.
DebTags::Vocabulary/usr/share/debtags/vocabulary
The location of the debtags
vocabulary file; used to load in the package tag
metadata.
Dir::Aptitude::state/var/lib/aptitude
The directory in which &aptitude;'s persistent
state information is stored.
Quiet0
This controls the quietness of the command-line mode.
Setting it to a higher value will disable more
progress indicators.
Themes
A theme in &aptitude; is simply a
collection of settings that go together.
Themes work by overriding the default values of options: if
an option is not set in the system configuration file or in
your personal configuration file, &aptitude; will use the
setting from the current theme, if one is available, before
using the standard default value.
A theme is simply a named group under
Aptitude::Themes; each configuration
option contained in the group will override the
corresponding option in the global configuration. For
instance, if the Dselect theme is
selected, the option
Aptitude::Themes::Dselect::Aptitude::UI::Package-Display-Format
will override the default value of the option
Aptitude::UI::Package-Display-Format.
To select a theme, set the configuration option Aptitude::Theme to the name of the theme; for instance,
Aptitude::Theme Vertical-Split;
The following themes are shipped with &aptitude; in
/usr/share/aptitude/aptitude-defaults:
Dselect
This theme makes &aptitude; look and behave more like
the legacy dselect package manager:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
--\ Installed Packages
--\ Priority required
--\ base - The Debian base system
c base base-file 3.0.16 3.0.16 Debian base system miscellaneous fil
c base base-pass 3.5.7 3.5.7 Debian base system master password a
c base bash 2.05b-15 2.05b-15 The GNU Bourne Again SHell
c base bsdutils 1:2.12-7 1:2.12-7 Basic utilities from 4.4BSD-Lite
c base coreutils 5.0.91-2 5.0.91-2 The GNU core utilities
c base debianuti 2.8.3 2.8.3 Miscellaneous utilities specific to
c base diff 2.8.1-6 2.8.1-6 File comparison utilities
base-files installed ; none required
This package contains the basic filesystem hierarchy of a Debian system, and
several important miscellaneous files, such as /etc/debian_version,
/etc/host.conf, /etc/issue, /etc/motd, /etc/profile, /etc/nsswitch.conf, and
others, and the text of several common licenses in use on Debian systems.
Vertical-Split
This theme rearranges the display: instead of the
current package's description appearing underneath the
package list, it is displayed to the right of the
package list. This theme is useful with very wide
terminals, and perhaps also when editing the built-in
hierarchy of packages.
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
aptitude 0.2.14.1
--\ Installed Packages Modern computers support the Advanced #
--\ admin - Administrative utilities Configuration and Power Interface
--\ main - The main Debian archive (ACPI) to allow intelligent power
i acpid 1.0.3-19 1.0.3-19 management on your system and to query
i alien 8.44 8.44 battery and configuration status.
i anacron 2.3-9 2.3-9
i apt-show-vers 0.07 0.07 ACPID is a completely flexible, totally
i A apt-utils 0.5.25 0.5.25 extensible daemon for delivering ACPI
i apt-watch 0.3.2-2 0.3.2-2 events. It listens on a file
i aptitude 0.2.14.1-2 0.2.14.1-2 (/proc/acpi/event) and when an event
i at 3.1.8-11 3.1.8-11 occurs, executes programs to handle the
i auto-apt 0.3.20 0.3.20 event. The programs it executes are
i cron 3.0pl1-83 3.0pl1-83 configured through a set of
i debconf 1.4.29 1.4.29 configuration files, which can be
i debconf-i18n 1.4.29 1.4.29 dropped into place by packages or by
i A debootstrap 0.2.39 0.2.39 the admin.
i A deborphan 1.7.3 1.7.3
i debtags 0.16 0.16 In order to use this package you need a
i A defoma 0.11.8 0.11.8 recent Kernel (=>2.4.7). This can be
i discover 2.0.4-5 2.0.4-5 one including the patches on
Utilities for using ACPI power managementPlaying Minesweeper
In case you get tired of installing and removing packages,
&aptitude; includes a version of the classic game
Minesweeper. To start it, select
&actions-mine;; the initial Minesweeper board will appear:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Minesweeper 10/10 mines 13 seconds
+--------+
| |
| |
| |
| |
| |
| |
| |
| |
+--------+
Within the rectangle that appears on the screen are hidden ten
mines. Your goal is to determine, through intuition, logic,
and luck, where those mines are, without setting any of them
off! To do this, you must uncover all the squares that
do not contain mines; in doing so, you
will learn important information regarding which squares do
contain mines. Beware, however: uncovering a square that
contains a mine will set it off, ending your game immediately!
To uncover a square (and find out whether a mine is hidden
there), select the square with the arrow keys and press
Enter:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Minesweeper 10/10 mines 387 seconds
+--------+
| 2......|
| 2111...|
| 1...|
| 1111...|
|11...111|
|...113 |
|1122 |
| |
+--------+
As you can see, some of the hidden (blank) parts of the board
have been revealed in this screenshot. The squares containing
a . are squares which are not next to
any mines; the numbers in the remaining squares indicate how
many mines they are next to.
If you think you know where a mine is, you can place a
flag on it. To do this, select the suspected
square and press f. For instance, in the
screenshot below, I decided that the square on the left-hand
side of the board looked suspicious...
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Minesweeper 9/10 mines 961 seconds
+--------+
| 2......|
| 2111...|
| 1...|
|F1111...|
|11...111|
|...113 |
|1122 |
| |
+--------+
As you can see, an F appeared in the
selected square. It is no longer possible to uncover this
square, even accidentally, until the flag is removed (by
pressing f again). Once you have placed
flags on all the mines that are next to a square (for
instance, the squares labelled 1 next to
the flag above), you can sweep around the
square. This is just a convenient shortcut to uncover all the
squares next to it (except those containing a flag, of
course). For instance, sweeping around the
1 above:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Minesweeper 9/10 mines 2290 seconds
+--------+
| 2......|
| 2111...|
|221 1...|
|F1111...|
|11...111|
|...113 |
|1122 |
| |
+--------+
Luckily (or was it luck?), my guess about the location of that
mine was correct. If I had been wrong, I would have lost
immediately:
Actions Undo Package Search Options Views Help
f10: Menu ?: Help q: Quit u: Update g: Download/Install/Remove Pkgs
Minesweeper Minesweeper Lost in 2388 seconds
+--------+
|^2......|
|^2111...|
|221^1...|
|^1111...|
|11...111|
|...113^ |
|1122* ^ |
| ^ ^ ^|
+--------+
When you lose, the locations of all the mines are revealed:
unexploded mines are indicated by a caret symbol
(^), and the one you stepped
on is indicated by an asterisk (*).
aptitude frequently asked questions
Monty Python and the Holy GrailWhat ... is your name?I am Arthur, King of the Britons.What ... is your quest?I seek the Holy Grail!What ... is the airspeed velocity of an unladen swallow?What do you mean? An African or a European swallow?Huh? I ... I don't kn---AAAAAUUUGGGHH!
How can I find exactly one package by name?
As mentioned in , when
you search for a package by name, the text you enter is
actually a regular expression. Thus, the search pattern
^name$
will match only a package named
name.
For instance, you can find apt (but not
aptitude or
synaptic) by entering
^apt$; you can find
g++ (but not
g++-2.95 or g++-3.0)
by entering ^g\+\+$.
How can I find broken packages?
Use the command &search-find-broken;.
I want to select text, why doesn't &aptitude; let me disable
the mouse?
Normally, you cannot select text in an xterm while a
program running in that terminal (such as &aptitude;) is
using the mouse. However, you can override this behavior
and perform a selection by holding the
Shift key down while you click on the
terminal.
Credits
TerryPratchett,
The Last Hero
No-one remembers the singer.
The song remains.
This section commemorates some of the people who have
contributed to &aptitude; over its lifetime.
This section is presently rather incomplete and will likely be
updated and expanded as time goes on (in particular, there are
many missing translation credits due to the huge number of
sources of translations
It should be possible to compile a fairly complete list of
i18n contributors based on the ChangeLog, its references
to the Debian bug tracking system, and the revision
history of &aptitude;, but doing so will require a large
investment of time that is not currently available.
). If you think you should be on this
list, please email dburrows@debian.org with an
explanation of why you think so.
Translations and internationalizationBrazilian translation
Andre Luis Lopes, Gustavo Silva
Chinese translation
Carlos Z.F. Liu
Czech translation
Miroslav Kure
Danish translation
Morten Brix Pedersen, Morten Bo Johansen
Dutch translation
Luk Claes
Finnish translation
Jaakko Kangasharju
French translation
Martin Quinson, Jean-Luc Coulon
German translationSebastian Schaffert, Erich Schubert, Sebastian Kapfer, Jens SeidelItalian translation
Danilo Piazzalunga
Japanese translation
Yasuo Eto, Noritada Kobayashi
Lithuanian translation
Darius ?itkevicius
Polish translation
Michal Politowski
Portuguese translation
Nuno Sénica, Miguel Figueiredo
Norwegian translation
Håvard Korsvoll
Spanish translation
Jordi Malloch, Ruben Porras
Swedish translation
Daniel Nylander
Initial i18n patchMasato Taruishii18n triaging and maintainenceChristian PerrierDocumentationUser's Manual
Daniel Burrows
ProgrammingProgram design and implementation
Daniel Burrows
Support for the dpkg Breaks field
Ian Jackson, Michael Vogt
Command-line reference
&manpage;