5.2. The Debian Package Manager
Debian GNU/Linux provides several package management tools, primarily
intended to facilitate the building, installation, and management
of binary packages. Debian package names generally end in
.deb. The Debian package management tools include:
- dpkg
Until recently, the most important of the Debian packaging
tools and still the primary package management program. Used to
install or uninstall packages or as a frontend to
dpkg-deb.
- dpkg-deb
Lower-level packaging tool. Used to create and manage the Debian
package archives. Accepts and executes commands from
dpkg or can be called directly.
- dselect
An interactive frontend to dpkg.
- apt-get
The currently available piece of the Advanced Package Tool (APT),
which is still being developed and is intended to be a modern,
user-friendly package management tool. Can be run from the command
line or selected as a method from dselect. One of the features of apt-get is that you can use it to get and install
packages across the Internet by specifying an
ftp:// or http:// URL.
Another feature is that you can use it to upgrade all packages
currently installed on your system in a single operation.
5.2.1. Files
Some important files used by the Debian package management tools are:
- control
Comes with each package; documents dependencies; contains the name and version of the
package, a description, maintainer, installed size, and so on.
- conffiles
Comes with each package and contains a list of the configuration
files associated with the package.
- preinst, postinst,
prerm, postrm
Scripts that can be included in a package to be run before installation,
after installation, before removal, or after removal of the package.
- /var/lib/dpkg/available
Contains information about packages available on the system.
- /var/lib/dpkg/status
Contains information about the status of packages available on the
system.
- /etc/apt/sources.list
A list for APT of package sources, used
to locate packages. The sources are listed one per line, in
order of preference.
- /etc/apt/apt.conf
The main APT configuration file.
5.2.2. Package States and Selection States
The possible states that a package can be in are:
- config-files
Only the configuration files for the package are present on the system.
- half-configured
The package is unpacked and configuration was started but not completed.
- half-installed
Installation was started but not completed.
- installed
The package is unpacked and configured.
- not-installed
The package is not installed.
- unpacked
The package is unpacked but not configured.
The possible package selection states are:
- deinstall
The package has been selected for deinstallation (i.e., for
removal of everything but configuration files).
- install
The package has been selected for installation.
- purge
The package has been selected to be purged (i.e., for removal of
everything including the configuration files).
5.2.3. Package Flags
There are two possible package flags that can be set for
a package. They are:
- hold
The package is not to be handled by dpkg, unless
forced with the --force-hold option.
- reinst-required
The package is broken and needs to be reinstalled. Such a package cannot
be removed, unless forced with the
--force-reinstreq option.
5.2.4. Scripts
In addition to the commands described in the next subsection,
several shell and Perl scripts are included with the package manager
for use in building packages:
- dpkg-buildpackage
Help automate package building. Shell script.
- dpkg-distaddfile
Add an entry for a file to debian/files. Perl script.
- dpkg-genchanges
Generate an upload control file from the information in an unpacked,
built, source tree and the files it has generated. Perl script.
- dpkg-gencontrol
Read information from an unpacked source tree and
display a binary package control file on standard output. Perl script.
- dpkg-name
Rename Debian packages to their full package names. Shell script.
- dpkg-parsechangelog
Read and parse the changelog from an unpacked source tree and write
the information to standard output in machine-readable form. Perl script.
- dpkg-scanpackages
Create a Packages file from a tree of binary
packages. The Packages file is used by
dselect to provide a list of packages
available for installation. Perl script.
- dpkg-shlibdeps
Calculate shared library dependencies for named executables. Perl script.
- dpkg-source
Pack and unpack Debian source archives. Perl script.
5.2.5. Debian Package Manager Command Summary
apt-cdrom | apt-cdrom [options] command Add a new CD-ROM to APT's list of available sources. Currently, the
only command is add, which is
required (except with the --help
option). The database of CD-ROM IDs that APT maintains is
/var/state/apt/cdroms.list.
Options
Options can be specified on the command line or they may be set
in the configuration file. Boolean options set in the configuration
file can be overridden on the command line in a number of different ways,
a couple of which are
--no-opt and
-opt=no, where
opt is the single-character or full name of the option.
- -a, --thorough
Do a thorough package scan. May be needed with some old Debian CD-ROMs.
- -c, --config-file
Specify a configuration file to be read after the default configuration file.
- -d, --cdrom
Specify the CD-ROM mount point, which must be listed in
/etc/fstab. The configuration option is Acquire::cdrom::mount.
- -f, --fast
Do a fast copy, assuming the files are valid and don't all need checking. Specify this only if this disk has been run before without error.
The configuration option is APT::CDROM::Fast.
- -h, --help
Print help message and exit.
- -m, --no-mount
Don't mount or unmount the mount point. The configuration option is APT::CDROM::NoMount.
- -n, --just-print, --recon, --no-act
Check everything, but don't actually make any changes.
The configuration option is APT::CDROM::NoAct.
- -o, --option
Set a configuration option. Syntax is -o
group::tool=option
(e.g., APT::CDROM=Fast).
- -r, --rename
Prompt for a new label and rename the disk to the new value.
The configuration option is APT::CDROM::Rename.
- -v, --version
Print the version information and exit.
| apt-get | apt-get [options] command [package...] A command-line tool for handling packages. Will eventually be a
backend to APT.
Commands
- autoclean
Like clean, but remove only package files that can no
longer be downloaded.
- clean
Clear the local repository of retrieved package files.
- check
Update the package cache and check for broken packages.
- dist-upgrade
Like upgrade but also handle dependencies intelligently.
- dselect-upgrade
Used together with dselect. Track the changes made
by dselect to the Status field of available packages
and take actions necessary to realize that status.
- install package...
Install one or more packages. Specify the package name, not the full filename. Other required packages also are retrieved and installed. With a hyphen
appended to the package name, the package is removed if it is
already installed.
- remove package...
Remove one or more packages. Specify the package name, not the full filename. With a plus sign appended to the name, the package is installed.
- source package...
Find source packages and download them into the current directory. If
specified with --compile, the source
packages are compiled into binary packages. With
--download-only, the source packages are not
unpacked.
- update
Resynchronize the package overview files from their sources. Must be
done before an upgrade or dist-upgrade.
- upgrade
Install the latest versions of all packages currently installed. Run
update first.
Options
Options can be specified on the command line or they may be set
in the configuration file. Boolean options set in the configuration
file can be overridden on the command line in one of several ways,
a couple of which are
--no-opt and
-opt=no, where
opt is the single-character or full name of the option.
- -b, --compile, --build
Compile source packages after download.
- -c, --config-file
Specify a configuration file to read after the default.
- -d, --download-only
Retrieve package files, but don't unpack or install them. The configuration option is APT::Get::Download-only.
- -f, --fix-broken
Try to fix a system with broken dependencies. Can be used alone or with
a command. The configuration option is APT::Get::Fix-Broken.
- --force-yes
Force yes. Causes APT to continue without prompting if it is doing something
that could damage your system. Use with great caution and only if absolutely
necessary. The configuration option is APT::Get::force-yes.
- -h, --help
Display a help message and exit.
- --ignore-hold
Ignore a hold placed on a package. Use with dist-upgrade
to override many undesired holds. The configuration option is APT::Get::Ignore-Hold.
- -m, --ignore-missing, --fix-missing
Ignore missing or corrupted packages or packages that cannot be retrieved.
Can cause problems when used with -f.
- --no-download
Disable package downloading; use with
--ignore-missing to force APT to use
only the packages that have already been downloaded.
- --no-upgrade
Do not upgrade packages. Use with install to prevent
upgrade of packages that are already installed. The configuration option is APT::Get::no-upgrade.
- -o, --option
Set a configuration option. Syntax is -o
group::tool=option
(e.g., APT::Get=force-yes).
- --print-uris
Print URIs of files instead of fetching them. Print path, destination
filename, size, and expected MD5 hash. The configuration option is
APT::Get::Print-URIs.
- -q, --quiet
Quiet. Omit progress indicators, produce only logging output. Add a
q to make even quieter.
- -s, --simulate, --just-print, --dry-run, --recon, --no-act
Go through the motions, but don't actually make any changes to the system.
The configuration option is APT::Get::Simulate.
- -u, --show-upgraded
Print a list of all packages to be upgraded.
The configuration option is APT::Get::Show-Upgraded.
- -v, --version
Display the version and exit.
- -y, --yes, --assume-yes
Automatically reply "yes" to prompts and run noninteractively. Abort if
there is an error. The configuration option is APT::Get::Assume-Yes.
| dpkg | dpkg [options] action A tool for installing, managing, and building packages. Serves as
a frontend to dpkg-deb.
dpkg actions
These actions are carried out by dpkg itself:
- -i pkgfile, --install pkgfile
Install the package specified as pkgfile. With
-R or
--recursive,
pkgfile must be a directory.
- --unpack pkgfile
Unpack the package, but don't configure it. With
-R or
--recursive,
pkgfile must be a directory.
- --configure [packages|-a|--pending]
Reconfigure one or more unpacked packages. If
-a or
--pending is given instead of
packages,
configure all packages that are unpacked but not configured.
- -r, --remove [packages|-a|--pending]
- --purge [packages|-a|--pending]
Remove or purge one or more installed packages. Removal gets rid
of everything except the configuration files listed in debian/conffiles;
purging also removes the configuration files.
If -a or
--pending is given instead of
packages, dpkg removes or purges
all packages that are unpacked and marked
(in /var/lib/dpkg/status) for removing or purging.
- --print-avail package
Print the details about package from
/var/lib/dpkg/available.
- --update-avail pkgs-file
- --merge-avail pkgs-file
Update the record of available files kept in /var/lib/dpkg/available.
This information is used by dpkg and dselect
to determine what packages are available. Update will replace the information with the contents
of the pkgs-file, distributed as
Packages. Merge combines the
information from Packages with the existing information.
- -A pkgfile, --record-avail pkgfile
Update the record of available files kept in /var/lib/dpkg/available
with information from pkgfile. This information is used by
dpkg and dselect to determine what packages are
available. With
-R or
--recursive,
pkgfile must be a directory.
- --forget-old-unavail
Forget about uninstalled unavailable packages.
- --clear-avail
Remove existing information about what packages are
available.
- -l, --list [pkg-name-pattern]
List all packages whose names match the specified pattern. With no pattern, list
all packages in /var/lib/dpkg/available. The pattern can include
standard shell wildcard characters and may
have to be quoted to prevent the shell from doing filename expansion.
- -s packages, --status packages
Report the status of one or more packages by displaying the
entry in the status database /var/lib/dpkg/status.
- -C, --audit
Search for partially installed packages and suggest how to get them
working.
- --get-selections [pattern]
Get list of package selections and write to standard output. With
pattern specified, write selections that match
the pattern.
- --set-selections
Set package selections based on input file read from standard input.
- --yet-to-unpack
Search for uninstalled packages that have been selected for
installation.
- -L packages, --listfiles packages
List installed files that came from the specified package or
packages.
- -S filename-pattern, --search filename-pattern
Search installed packages for a filename. The pattern can include
standard shell wildcard characters and may have to be quoted to prevent
the shell from doing filename expansion.
- --print-architecture
Print target architecture.
- --print-gnu-build-architecture
Print the GNU version of the target architecture.
- --print-installation-architecture
Print host architecture for installation.
- --compare-versions ver1 op ver2
Perform a binary comparison of two version numbers. The operators
lt le eq ne ge gt treat a missing version as earlier. The
operators lt-nl le-nl ge-nl gt-nl treat a missing
version as later (where nl is "not later").
There is a third set of operators (< << <=
= >= >> >) that is provided for compatibility
with control-file syntax.
dpkg returns zero for success (i.e., the condition is
satisfied) and nonzero otherwise.
- --help
Print help message and exit.
- --force-help
Print help message about the
--force-list
options and exit.
- -Dh, --debug=help
Print debugging help message and exit.
- --license
Print dpkg license information and exit. Accepts the spelling
--licence in addition to
--license.
- --version
Print dpkg version information and exit.
dpkg-deb actions
The following actions can be specified for dpkg
and are passed to dpkg-deb for execution. Also see
dpkg-deb.
- -b dir [archive], --build dir [archive]
Build a package.
- -c archive, --contents archive
List the contents of a package.
- -e, --control archive dir
Extract control information from a package.
- -f archive [control-fields], --field archive [control-fields]
Display the control field or fields of a package.
- -I archive [control-files], --info archive [control-files]
Show information about a package.
- --fsys-tarfile archive
Display the filesystem tar- file contained by a package.
- -x archive dir, --extract archive dir
Extract the files from a package.
- -X archive dir, --vextract archive dir
Extract and display the filenames from a package.
Options
- --abort-after=num
Abort processing after num errors. Default is 50.
- -B, --auto-deconfigure
When a package is removed, automatically deconfigure any other package that
depended on it.
- -Doctal, --debug=octal
Turn on debugging, with the octal value specifying the
desired level of debugging information. Use
-Dh or --debug=help
to display the possible values. You can OR the values to get the
desired output.
- -E, --skip-same-version
Don't install the package if this version is already installed.
- --force-list, --no-force-list, --refuse-list
Force or refuse to force an operation. list is specified
as a comma-separated item of options.
With --force, a warning
is printed, but processing continues.
--refuse and
--no-force cause processing
to stop with an error. The force/refuse options are:
- architecture
Process even if intended for a different architecture.
- auto-select
Select or deselect packages to install or remove them. Forced
by default.
- bad-path
Some programs are missing from the path.
- configure-any
Configure any unconfigured package that the package depends on.
- conflicts
Permit installation of conflicting packages. Can result in problems from
files being overwritten.
- depends
Turn dependency problems into warnings.
- depends-version
Warn of version problems when checking dependencies, but otherwise ignore.
- downgrade
Install even if a newer version is already installed. Forced by default.
- hold
Process packages even if they are marked to be held.
- not-root
Try to install or remove even when not logged on as root.
- overwrite
Overwrite a file from one package with the same file from another
package. Forced by default.
- overwrite-dir
Overwrite one package's directory with a file from another package.
- overwrite-diverted
Overwrite a diverted file with an undiverted version.
- remove-essential
Remove an essential package. Note that this can
cause your system to stop working.
- remove-reinstreq
Remove packages that are broken and are marked to require reinstallation.
- -G
Don't install a package if a newer version is already installed.
The same as --refuse-downgrade.
- --ignore-depends=pkglist
Dependency problems result only in a warning for the packages in
pkglist.
- --largemem
Specify that dpkg can use as much memory as it needs.
- --new
New binary package format. This is a
dpkg-deb option.
- --no-act
Go through the motions, but don't actually write any changes. Used
for testing. Be sure to specify before the action; otherwise changes
might be written.
- --nocheck
Ignore the contents of the control file when building a package. This is a dpkg-deb option.
- -O, --selected-only
Process only packages that are marked as selected for
installation.
- --old
Old binary package format. This is a
dpkg-deb option.
- -R, --recursive
Recursively handle .deb files found in the directories specified
with -A,
--install,
--unpack, and
--avail and their subdirectories.
- -R, --root=dir, --admindir=dir, --instdir=dir
Change default directories. admindir contains
administrative files with status and other information about packages; it defaults
to /var/lib/dpkg. instdir is
the directory in which packages are installed and defaults to /.
Changing the root directory to dir
automatically changes instdir to dir
and admindir to /dir/var/lib/dpkg.
- --smallmem
Specify that dpkg should try to preserve memory.
| dpkg-deb | dpkg-deb action [options] Backend command for building and managing Debian package archives. Also
see dpkg; you'll often want to use dpkg
to pass commands through to dpkg-deb, rather than
call dpkg-deb directly.
Actions
- -b dir [archive], --build dir [archive]
Create an archive from the filesystem tree starting with
directory dir. The directory
must have a DEBIAN
subdirectory containing the control file and any other control information.
If archive is specified and is a filename, the package
is written to that file; if no archive is specified,
the package is written to dir.deb. If the archive
already exists, it is replaced. If archive is the name
of a directory, the dpkg-deb looks in the control file
for the information it needs to generate the package name. (Note that for
this reason, you cannot use --no-check
with a directory name.)
- -c archive, --contents archive
List the filesystem-tree portion of archive.
- -e, --control archive dir
Extract control information from archive into the
directory dir, which is created if it doesn't exist.
- -f archive [control-fields], --field archive [control-fields]
Extract information about one or more fields in the control file for
archive. If no fields are provided, print the entire
control file.
- -h, --help
Print help information and exit.
- -I archive [control-files], --info archive [control-files]
Provide information about binary package archive. If no
control files are provided, print a summary of the package contents; otherwise,
print the control files in the order they were specified. An error message is
printed to standard error for any missing components.
- --fsys-tarfile archive
Extract the filesystem tree from archive, and send it to
standard output in tar format. Can be used with
tar to extract individual files from an archive.
- --license
Print the license information and exit. Accepts the spelling
--licence in addition to
--license.
- --version
Print the version number and exit.
- -x archive dir, --extract archive dir
- -X archive dir, --vextract archive dir
Extract the filesystem tree from archive into the
specified directory, creating dir if it doesn't already
exist. -x
(--extract)
works silently, while -X
(--vextract)
lists the files as it
extracts them. Do not use this option to install packages; use
dpkg instead.
Options
- -D
Turn on debugging.
- --new
Build a new-style archive format (this is the default).
- --no-check
Don't check the control file before building an archive. This lets you build a broken archive.
- --old
Build an old-style archive format.
| dpkg-split | dpkg-split [action] [options] Split a binary package into smaller pieces and reassemble the pieces,
manually or in automatic mode. The automatic mode maintains a queue of
parts for reassembling. Useful for transferring to and from floppy disks.
Actions
- -a -o output part, --auto -o output part
Add part to the queue for automatic reassembly and if
all the parts are available, reassemble the package as
output.
- -d [packages], --discard [packages]
Discard parts from the automatic-assembly queue. If any
packages are specified, discard only parts from those
packages. Otherwise, empty the queue.
- -I parts, --info parts
Print information about the part file or files specified.
- -j parts, --join parts
Join the parts of a package file together from the parts
specified. The default output file is package-version.deb.
- -l, --listq
List the contents of the queue of parts waiting for reassembly, giving
the package name, the parts that are on the queue, and the number of bytes.
- -s full-package [prefix], --full-package [prefix]
Split the package full-package into parts, named
prefixNofM.deb. The prefix
defaults to the full-package name without the
.deb extension.
- -h, --help
Print help message and exit.
- --license
Print the license information and exit. Accepts the spelling
--licence in addition to
--license.
- --version
Print the version information and exit.
Options
- --depotdir
Specify an alternate directory depotdir for the
queue of parts waiting for reassembly. Default is
/var/lib/dpkg.
- --msdos
Force --split output filenames
to be MS-DOS-compatible.
- -Q, --npquiet
Do not print an error message for a part that doesn't
belong to a binary package when doing automatic queuing or
reassembly.
- -o output, --output output
Use output as the filename for a reassembled package.
- -S num, --partsize num
When splitting, specify the maximum part size
(num) in kilobytes. Default is 450 KB.
| dselect | dselect [options] [action] A screen-oriented user frontend to dpkg. The primary
user interface for installing and managing packages. See
dpkg and dpkg-deb for information
on building packages.
Actions
If dselect is run with no action specified on the
command line, it displays the following menu:
* 0. [A]ccess Choose the access method to use.
1. [U]pdate Update list of available packages, if possible.
2. [S]elect Request which packages you want on your system.
3. [I]nstall Install and upgrade wanted packages.
4. [C]onfig Configure any packages that are unconfigured.
5. [R]emove Remove unwanted software.
6. [Q]uit Quit dselect.
The asterisk (on the first line here) shows the currently selected option.
Any of the menu items can be specified directly on the command line as an action
(access, update,
select, install,
config, remove,
quit) to go directly to the desired activity. For example:
% dselect access
If you enter quit on the command line,
dselect exits immediately without doing anything. An additional
command-line action is menu, which
displays the menu and is equivalent to omitting the action.
Options
- --admindir dir
Change the directory that holds internal data files to
dir. Default is /var/lib/dpkg.
- -D [file], --debug [file]
Turn on debugging. Send output to file if
specified.
- --help
Print help message and exit.
- --license
Print the license information and exit. Accepts the spelling
--licence in addition to
--license.
- --version
Print version information and exit.
|
| | | 5. Red Hat and Debian Package Managers | | 6. The Linux Shells: An Overview |
Copyright © 2001 O'Reilly & Associates. All rights reserved.
|