937 lines
24 KiB
HTML
937 lines
24 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
|
|
|
|
<title>The Debian GNU/Linux FAQ - The Debian package management tools</title>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<p><a name="ch-pkgtools"></a></p>
|
|
<hr>
|
|
|
|
<p>
|
|
[ <a href="ch-pkg_basics.en.html">previous</a> ]
|
|
[ <a href="index.en.html#contents">Contents</a> ]
|
|
[ <a href="ch-basic_defs.en.html">1</a> ]
|
|
[ <a href="ch-getting.en.html">2</a> ]
|
|
[ <a href="ch-compat.en.html">3</a> ]
|
|
[ <a href="ch-software.en.html">4</a> ]
|
|
[ <a href="ch-ftparchives.en.html">5</a> ]
|
|
[ <a href="ch-pkg_basics.en.html">6</a> ]
|
|
[ 7 ]
|
|
[ <a href="ch-uptodate.en.html">8</a> ]
|
|
[ <a href="ch-kernel.en.html">9</a> ]
|
|
[ <a href="ch-customizing.en.html">10</a> ]
|
|
[ <a href="ch-support.en.html">11</a> ]
|
|
[ <a href="ch-contributing.en.html">12</a> ]
|
|
[ <a href="ch-redistrib.en.html">13</a> ]
|
|
[ <a href="ch-nexttime.en.html">14</a> ]
|
|
[ <a href="ch-faqinfo.en.html">15</a> ]
|
|
[ <a href="ch-uptodate.en.html">next</a> ]
|
|
</p>
|
|
|
|
<hr>
|
|
|
|
<h1>
|
|
The Debian GNU/Linux FAQ
|
|
<br>Chapter 7 - The Debian package management tools
|
|
</h1>
|
|
|
|
<hr>
|
|
|
|
<h2><a name="s-pkgprogs"></a>7.1 What programs does Debian provide for managing its packages?</h2>
|
|
|
|
<p>
|
|
There are multiple tools that are used to manage Debian packages, from graphic
|
|
or text-based interfaces to the low level tools used to install packages. All
|
|
the available tools rely on the lower level tools to properly work and are
|
|
presented here in decreasing complexity level.
|
|
</p>
|
|
|
|
<p>
|
|
It is important to understand that the higher level package management tools
|
|
such as <code>aptitude</code> or <code>dselect</code> rely on <code>apt</code>
|
|
which, itself, relies on <code>dpkg</code> to manage the packages in the
|
|
system.
|
|
</p>
|
|
|
|
<p>
|
|
See the <code><a href="http://www.debian.org/doc/manuals/apt-howto/">APT
|
|
HOWTO</a></code> for more information about the Debian package management
|
|
utilities. This document is available in various languages and formats, see
|
|
<code><a href="http://www.debian.org/doc/user-manuals#apt-howto">the APT HOWTO
|
|
entry on the DDP Users' Manuals overview</a></code>.
|
|
</p>
|
|
|
|
<hr>
|
|
|
|
<h3><a name="s-dpkg"></a>7.1.1 dpkg</h3>
|
|
|
|
<p>
|
|
This is the main package management program. <code>dpkg</code> can be invoked
|
|
with many options. Some common uses are:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Find out all the options: <samp>dpkg --help</samp>.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Print out the control file (and other information) for a specified package:
|
|
<samp>dpkg --info foo_VVV-RRR.deb</samp>
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Install a package (including unpacking and configuring) onto the file system of
|
|
the hard disk: <samp>dpkg --install foo_VVV-RRR.deb</samp>.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Unpack (but do not configure) a Debian archive into the file system of the hard
|
|
disk: <samp>dpkg --unpack foo_VVV-RRR.deb</samp>. Note that this operation
|
|
does <em>not</em> necessarily leave the package in a usable state; some files
|
|
may need further customization to run properly. This command removes any
|
|
already-installed version of the program and runs the preinst (see <a
|
|
href="ch-pkg_basics.en.html#s-maintscripts">What is a Debian preinst, postinst,
|
|
prerm, and postrm script?, Section 6.6</a>) script associated with the package.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Configure a package that already has been unpacked: <samp>dpkg --configure
|
|
foo</samp>. Among other things, this action runs the postinst (see <a
|
|
href="ch-pkg_basics.en.html#s-maintscripts">What is a Debian preinst, postinst,
|
|
prerm, and postrm script?, Section 6.6</a>) script associated with the package.
|
|
It also updates the files listed in the <samp>conffiles</samp> for this
|
|
package. Notice that the 'configure' operation takes as its argument a package
|
|
name (e.g., foo), <em>not</em> the name of a Debian archive file (e.g.,
|
|
foo_VVV-RRR.deb).
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Extract a single file named "blurf" (or a group of files named
|
|
"blurf*" from a Debian archive: <samp>dpkg --fsys-tarfile
|
|
foo_VVV-RRR.deb | tar -xf - blurf*</samp>
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Remove a package (but not its configuration files): <samp>dpkg --remove
|
|
foo</samp>.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Remove a package (including its configuration files): <samp>dpkg --purge
|
|
foo</samp>.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
List the installation status of packages containing the string (or regular
|
|
expression) "foo*": <samp>dpkg --list 'foo*'</samp>.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<hr>
|
|
|
|
<h3><a name="s-apt-get"></a>7.1.2 APT</h3>
|
|
|
|
<p>
|
|
APT is the <em>Advanced Package Tool</em> and provides the <code>apt-get</code>
|
|
program. <code>apt-get</code> provides a simple way to retrieve and install
|
|
packages from multiple sources using the command line. Unlike
|
|
<code>dpkg</code>, <code>apt-get</code> does not understand .deb files, it
|
|
works with the packages proper name and can only install .deb archives from a
|
|
source specified in <code>/etc/apt/sources.list</code>. <code>apt-get</code>
|
|
will call <code>dpkg</code> directly after downloading the .deb archives[<a
|
|
href="footnotes.en.html#f4" name="fr4">4</a>] from the configured sources.
|
|
</p>
|
|
|
|
<p>
|
|
Some common ways to use <code>apt-get</code> are:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
To update the list of package known by your system, you can run:
|
|
</p>
|
|
|
|
<pre>
|
|
apt-get update
|
|
</pre>
|
|
|
|
<p>
|
|
(you should execute this regularly to update your package lists)
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
To upgrade all the packages on your system, run:
|
|
</p>
|
|
|
|
<pre>
|
|
apt-get upgrade
|
|
</pre>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
To install the <var>foo</var> package and all its dependencies, run:
|
|
</p>
|
|
|
|
<pre>
|
|
apt-get install foo
|
|
</pre>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
To remove the foo package from your system, run:
|
|
</p>
|
|
|
|
<pre>
|
|
apt-get remove foo
|
|
</pre>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
To remove the foo package and its configuration files from your system, run:
|
|
</p>
|
|
|
|
<pre>
|
|
apt-get --purge remove foo
|
|
</pre>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
To upgrade all the packages on your system to a new Debian GNU/Linux release,
|
|
run:
|
|
</p>
|
|
|
|
<pre>
|
|
apt-get dist-upgrade
|
|
</pre>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
Note that you must be logged in as root to perform any commands that modify the
|
|
system packages.
|
|
</p>
|
|
|
|
<p>
|
|
The apt tool suite also includes the <code>apt-cache</code> tool to query the
|
|
package lists. You can use it to find packages providing specific
|
|
functionality through simple text or regular expression queries and through
|
|
queries of dependencies in the package management system. Some common ways to
|
|
use <code>apt-cache</code> are:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
To find packages whose description contain <var>word</var>:
|
|
</p>
|
|
|
|
<pre>
|
|
apt-cache search <var>word</var>
|
|
</pre>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
To print the detailed information of a package:
|
|
</p>
|
|
|
|
<pre>
|
|
apt-cache show <var>package</var>
|
|
</pre>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
To print the packages a given package depends on:
|
|
</p>
|
|
|
|
<pre>
|
|
apt-cache depends <var>package</var>
|
|
</pre>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
To print detailed information of the versions available for a package and the
|
|
packages that reverse-depends on it:
|
|
</p>
|
|
|
|
<pre>
|
|
apt-cache showpkg <var>package</var>
|
|
</pre>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
For more information, install the <code>apt</code> package and read
|
|
<code>apt-get(8)</code>, <code>sources.list(5)</code> and install the
|
|
<code>apt-doc</code> package and read
|
|
<code>/usr/share/doc/apt-doc/guide.html/index.html</code>.
|
|
</p>
|
|
|
|
<hr>
|
|
|
|
<h3><a name="s-aptitude"></a>7.1.3 aptitude</h3>
|
|
|
|
<p>
|
|
<code>aptitude</code> is a package manager for Debian GNU/Linux systems that
|
|
provides a frontend to the apt package management infrastructure.
|
|
<code>aptitude</code> is a text-based interface using the curses library, it
|
|
can be used to perform management tasks in a fast and easy way.
|
|
</p>
|
|
|
|
<p>
|
|
<code>aptitude</code> provides the functionality of <code>dselect</code> and
|
|
<code>apt-get</code>, as well as many additional features not found in either
|
|
program:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
<code>aptitude</code> offers access to all versions of a package.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
<code>aptitude</code> logs all its actions in <code>/var/log/aptitude</code>.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
<code>aptitude</code> makes it easy to keep track of obsolete software by
|
|
listing it under "Obsolete and Locally Created Packages".
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
<code>aptitude</code> includes a fairly powerful system for searching
|
|
particular packages and limiting the package display. Users familiar with
|
|
<code>mutt</code> will pick up quickly, as <code>mutt</code> was the
|
|
inspiration for the expression syntax.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
<code>aptitude</code> tracks which packages have been installed due to
|
|
dependencies and removes them automatically when the packages that needed them
|
|
are removed from the system.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
<code>aptitude</code> can automatically install <em>Recommended:</em>
|
|
packages[<a href="footnotes.en.html#f5" name="fr5">5</a>].
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
<code>aptitude</code> in full screen mode has <code>su</code> functionality
|
|
embedded and can be run by a normal user. It will call <code>su</code> (and
|
|
ask for the root password, if any) when you really need administrative
|
|
privileges
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
You can use <code>aptitude</code> through a visual interface (simply run
|
|
<samp>aptitude</samp>) or directly from the command line. The command line
|
|
syntax used is very similar to the one used in <code>apt-get</code>. For
|
|
example, to install the <var>foo</var> package, you can run <samp>aptitude
|
|
install <var>foo</var></samp>.
|
|
</p>
|
|
|
|
<p>
|
|
Note that <code>aptitude</code> is the recommended program by Debian to install
|
|
a package and/or to upgrade your system.
|
|
</p>
|
|
|
|
<p>
|
|
For more informations, read the manual page <code>aptitude(8)</code> and
|
|
install the <code>aptitude-doc-en</code> package.
|
|
</p>
|
|
|
|
<hr>
|
|
|
|
<h3><a name="s-dselect"></a>7.1.4 dselect</h3>
|
|
|
|
<p>
|
|
This program is a menu-driven interface to the Debian package management
|
|
system. It is particularly useful for first-time installations. Some users
|
|
might feel more comfortable using <code>aptitude</code> which is also
|
|
recommended over <code>dselect</code> for large-scale upgrades. For more
|
|
information on <code>aptitude</code> please see <a href="#s-aptitude">aptitude,
|
|
Section 7.1.3</a>.
|
|
</p>
|
|
|
|
<p>
|
|
<code>dselect</code> can:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
guide the user as he/she chooses among packages to install or remove, ensuring
|
|
that no packages are installed that conflict with one another, and that all
|
|
packages required to make each package work properly are installed;
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
warn the user about inconsistencies or incompatibilities in their selections;
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
determine the order in which the packages must be installed;
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
automatically perform the installation or removal; and
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
guide the user through whatever configuration process are required for each
|
|
package.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
<code>dselect</code> begins by presenting the user with a menu of 7 items, each
|
|
of which is a specific action. The user can select one of the actions by using
|
|
the arrow keys to move the highlighter bar, then pressing the
|
|
<em><enter></em> key to select the highlighted action.
|
|
</p>
|
|
|
|
<p>
|
|
What the user sees next depends on the action he selected. If he selects any
|
|
option but <samp>Access</samp> or <samp>Select</samp>, then
|
|
<code>dselect</code> will simply proceed to execute the specified action: e.g.,
|
|
if the user selected the action <samp>Remove</samp>, then dselect would proceed
|
|
to remove all of the files selected for removal when the user last chose the
|
|
<samp>Select</samp> action.
|
|
</p>
|
|
|
|
<p>
|
|
Both the <samp>Access</samp> menu item and the <samp>Select</samp> menu item
|
|
lead to additional menus. In both cases, the menus are presented as split
|
|
screens; the top screen gives a scrollable list of choices, while the bottom
|
|
screen gives a brief explanation ("info") for each choice.
|
|
</p>
|
|
|
|
<p>
|
|
Extensive on-line help is available, use the '?' key to get to a help screen
|
|
at any time.
|
|
</p>
|
|
|
|
<p>
|
|
The order in which the actions are presented in the first <code>dselect</code>
|
|
menu represents the order in which a user would normally choose
|
|
<code>dselect</code> to install packages. However, a user can pick any of the
|
|
main menu choices as often as needed (including not at all, depending on what
|
|
one wants to do).
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Begin by choosing an <strong>Access Method</strong>. This is the method by
|
|
which the user plans on accessing Debian packages; e.g., some users have Debian
|
|
packages available on CD-ROM, while others plan to fetch them using anonymous
|
|
FTP. The selected "Access Method" is stored after
|
|
<code>dselect</code> exits, so if it does not change, then this option need not
|
|
be invoked again.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Then <strong>Update</strong> the list of available packages. To do this,
|
|
<code>dselect</code> reads the file "Packages.gz" which should be
|
|
included in the top level of the directory where the Debian packages to be
|
|
installed are stored. (But if it is not there, <code>dselect</code> will offer
|
|
to make it for you.)
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
<strong>Select</strong> specific packages for installation on his system.
|
|
After choosing this menu item, the user is first presented with a full screen
|
|
of help (unless the `--expert' command line option was used). Once the user
|
|
exits the Help screen, he sees the split-screen menu for choosing packages to
|
|
install (or remove).
|
|
</p>
|
|
|
|
<p>
|
|
The top part of the screen is a relatively narrow window into the list of
|
|
Debian's 18347 packages; the bottom part of the screen contains description of
|
|
the package or group of packages which are highlighted above.
|
|
</p>
|
|
|
|
<p>
|
|
One can specify which packages should be operated on by highlighting a package
|
|
name or the label for a group of packages. After that, you can select
|
|
packages:
|
|
</p>
|
|
<dl>
|
|
<dt>to be installed:</dt>
|
|
<dd>
|
|
<p>
|
|
This is accomplished by pressing the `+' key.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
<dt>to be deleted:</dt>
|
|
<dd>
|
|
<p>
|
|
Packages can be deleted two ways:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
removed: this removes most of the files associated with the package, but
|
|
preserves the files listed as configuration files (see <a
|
|
href="ch-pkg_basics.en.html#s-conffile">What is a Debian conffile?, Section
|
|
6.5</a>) and package configuration information. This is done by pressing the
|
|
`-' key.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
purged: this removes <em>every</em> file that is part of the package. This is
|
|
done by pressing the `_' key.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
Note that it's not possible to remove "All Packages". If you try
|
|
that, your system will instead be reduced to the initial installed base
|
|
packages.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
<dt>to be put "on hold"</dt>
|
|
<dd>
|
|
<p>
|
|
This is done by pressing `=', and it effectively tells <code>dselect</code> not
|
|
to upgrade a package even if the version currently installed on your system is
|
|
not as recent as the version that is available in the Debian repository you are
|
|
using (this was specified when you set the <strong>Access Method</strong>, and
|
|
acquired when you used <strong>Update</strong>).
|
|
</p>
|
|
|
|
<p>
|
|
Just like you can put a package on hold, you can reverse such setting by
|
|
pressing `:'. That tells <code>dselect</code> that the package(s) may be
|
|
upgraded if a newer version is available. This is the default setting.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
|
|
<p>
|
|
You can select a different order in which the packages are presented, by using
|
|
the `o' key to cycle between various options for sorting the packages. The
|
|
default order is to present packages by Priority; within each priority,
|
|
packages are presented in order of the directory (a.k.a. section) of the
|
|
archive in which they are stored. Given this sort order, some packages in
|
|
section A (say) may be presented first, followed by some packages in section B,
|
|
followed by more packages (of lower priority) in section A.
|
|
</p>
|
|
|
|
<p>
|
|
You can also expand meanings of the labels at the top of the screen, by using
|
|
the `v' (verbose) key. This action pushes much of the text that formerly fit
|
|
onto the display off to the right. To see it, press the right arrow; to scroll
|
|
back to the left, press the left arrow.
|
|
</p>
|
|
|
|
<p>
|
|
If you select a package for installation or removal, e.g.,
|
|
<code>foo.deb</code>, and that package depends on (or recommends) another
|
|
package, e.g., <code>blurf.deb</code>, then <code>dselect</code> will place the
|
|
you in a sub-screen of the main selection screen. There you can choose among
|
|
the related packages, accepting the suggested actions (to install or not), or
|
|
rejecting them. To do the latter, press Shift-D; to return to the former,
|
|
press Shift-U. In any case, you can save your selections and return to the
|
|
main selection screen by pressing Shift-Q.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Users returning to the main menu can then select the "Install" menu
|
|
item to unpack and configure the selected packages. Alternatively, users
|
|
wishing to remove files can choose the "Remove" menu item. At any
|
|
point, users can choose "Quit" to exit dselect; users' selections are
|
|
preserved by <code>dselect</code>.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<hr>
|
|
|
|
<h3><a name="s-dpkg-extra"></a>7.1.5 Other package management tools</h3>
|
|
|
|
<hr>
|
|
|
|
<h4><a name="s-dpkg-deb"></a>7.1.5.1 dpkg-deb</h4>
|
|
|
|
<p>
|
|
This program manipulates Debian archive(<samp>.deb</samp>) files. Some common
|
|
uses are:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Find out all the options: <samp>dpkg-deb --help</samp>.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Determine what files are contained in a Debian archive file: <samp>dpkg-deb
|
|
--contents foo_VVV-RRR.deb</samp>)
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Extract the files contained in a named Debian archive into a user specified
|
|
directory: <samp>dpkg-deb --extract foo_VVV-RRR.deb tmp</samp> extracts each of
|
|
the files in <samp>foo_VVV-RRR.deb</samp> into the directory <samp>tmp/</samp>.
|
|
This is convenient for examining the contents of a package in a localized
|
|
directory, without installing the package into the root file system.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>
|
|
Note that any packages that were merely unpacked using <samp>dpkg-deb
|
|
--extract</samp> will be incorrectly installed, you should use <samp>dpkg
|
|
--install</samp> instead.
|
|
</p>
|
|
|
|
<p>
|
|
More information is given in the manual page <code>dpkg-deb(1)</code>.
|
|
</p>
|
|
|
|
<hr>
|
|
|
|
<h4><a name="s-dpkg-split"></a>7.1.5.2 dpkg-split</h4>
|
|
|
|
<p>
|
|
This program splits large package into smaller files (e.g., for writing onto a
|
|
set of floppy disks), and can also be used to merge a set of split files back
|
|
into a single file. It can only be used on a Debian system (i.e. a system
|
|
containing the <code>dpkg</code> package), since it calls the program
|
|
<samp>dpkg-deb</samp> to parse the debian package file into its component
|
|
records.
|
|
</p>
|
|
|
|
<p>
|
|
For example, to split a big .deb file into N parts,
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Execute the command <samp>dpkg-split --split foo.deb</samp>. This will produce
|
|
N files each of approximately 460 KBytes long in the current directory.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Copy those N files to floppy disks.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Copy the contents of the floppy disks onto the hard disk of your choice on the
|
|
other machine.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
Join those part-files together using <samp>dpkg-split --join
|
|
"foo*"</samp>.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<hr>
|
|
|
|
<h2><a name="s-updaterunning"></a>7.2 Debian claims to be able to update a running program; how is this accomplished?</h2>
|
|
|
|
<p>
|
|
The kernel (file system) in Debian GNU/Linux systems supports replacing files
|
|
even while they're being used.
|
|
</p>
|
|
|
|
<p>
|
|
We also provide a program called <code>start-stop-daemon</code> which is used
|
|
to start daemons at boot time or to stop daemons when the kernel runlevel is
|
|
changed (e.g., from multi-user to single-user or to halt). The same program is
|
|
used by installation scripts when a new package containing a daemon is
|
|
installed, to stop running daemons, and restart them as necessary.
|
|
</p>
|
|
|
|
<hr>
|
|
|
|
<h2><a name="s-whatpackages"></a>7.3 How can I tell what packages are already installed on a Debian system?</h2>
|
|
|
|
<p>
|
|
To learn the status of all the packages installed on a Debian system, execute
|
|
the command
|
|
</p>
|
|
|
|
<pre>
|
|
dpkg --list
|
|
</pre>
|
|
|
|
<p>
|
|
This prints out a one-line summary for each package, giving a 2-letter status
|
|
symbol (explained in the header), the package name, the version which is
|
|
<em>installed</em>, and a brief description.
|
|
</p>
|
|
|
|
<p>
|
|
To learn the status of packages whose names match the string any pattern
|
|
beginning with "foo" by executing the command:
|
|
</p>
|
|
|
|
<pre>
|
|
dpkg --list 'foo*'
|
|
</pre>
|
|
|
|
<p>
|
|
To get a more verbose report for a particular package, execute the command:
|
|
</p>
|
|
|
|
<pre>
|
|
dpkg --status packagename
|
|
</pre>
|
|
|
|
<hr>
|
|
|
|
<h2><a name="s-filesearch"></a>7.4 How can I find out what package produced a particular file?</h2>
|
|
|
|
<p>
|
|
To identify the package that produced the file named <samp>foo</samp> execute
|
|
either:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
<samp>dpkg --search filename</samp>
|
|
</p>
|
|
|
|
<p>
|
|
This searches for <samp>filename</samp> in installed packages. (This is
|
|
(currently) equivalent to searching all of the files having the file extension
|
|
of <samp>.list</samp> in the directory <samp>/var/lib/dpkg/info/</samp>, and
|
|
adjusting the output to print the names of all the packages containing it, and
|
|
diversions.)
|
|
</p>
|
|
|
|
<p>
|
|
A faster alternative to this is the <code>dlocate</code> tool.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
<samp>zgrep foo Contents-ARCH.gz</samp>
|
|
</p>
|
|
|
|
<p>
|
|
This searches for files which contain the substring <samp>foo</samp> in their
|
|
full path names. The files <samp>Contents-ARCH.gz</samp> (where ARCH
|
|
represents the wanted architecture) reside in the major package directories
|
|
(main, non-free, contrib) at a Debian FTP site (i.e. under
|
|
<samp>/debian/dists/etch</samp>). A <samp>Contents</samp> file refers only to
|
|
the packages in the subdirectory tree where it resides. Therefore, a user
|
|
might have to search more than one <samp>Contents</samp> files to find the
|
|
package containing the file <samp>foo</samp>.
|
|
</p>
|
|
|
|
<p>
|
|
This method has the advantage over <samp>dpkg --search</samp> in that it will
|
|
find files in packages that are not currently installed on your system.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
<samp>apt-file search <var>foo</var></samp>
|
|
</p>
|
|
|
|
<p>
|
|
Similar to the above, it searches files which contain the substring or regular
|
|
expression <samp>foo</samp> in their full path names. The advantage over the
|
|
sample above is that there is no need to retrieve the
|
|
<samp>Contents-ARCH.gz</samp> files as it will do this automatically for all
|
|
the sources defined in <code>/etc/apt/sources.list</code> when you run (as
|
|
root) <samp>apt-file update</samp>.
|
|
</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<hr>
|
|
|
|
<h2><a name="s-datapackages"></a>7.5 Why doesn't get `foo-data' removed when I uninstall `foo'? How do I make sure old unused library-packages get purged?</h2>
|
|
|
|
<p>
|
|
Some packages that are split in program (`foo') and data (`foo-data'). This is
|
|
true for many games, multimedia applications and dictionaries in Debian and has
|
|
been introduced since some users might want to access the raw data without
|
|
installing the program or because the program can be run without the data
|
|
itself, making it optional.
|
|
</p>
|
|
|
|
<p>
|
|
Similar situations occur when dealing with libraries: generally these get
|
|
installed since packages containing applications depend on them. When the
|
|
application-package is purged, the library-package might stay on the system.
|
|
Or: when the application-package no longer depends upon e.g. libdb4.2, but
|
|
upon libdb4.3, the libdb4.2 package might stay when the application-package is
|
|
upgraded.
|
|
</p>
|
|
|
|
<p>
|
|
In these cases, `foo-data' doesn't depend on `foo', so when you remove the
|
|
`foo' package it will not get automatically removed by most package management
|
|
tools. The same holds true for the library packages. This is necessary to
|
|
avoid circular dependencies. If you use <code>aptitude</code> (see <a
|
|
href="#s-aptitude">aptitude, Section 7.1.3</a>) as your package management tool
|
|
it will, however, track automatically installed packages and remove them when
|
|
no packages remain that need them in your system.
|
|
</p>
|
|
|
|
<hr>
|
|
|
|
<p>
|
|
[ <a href="ch-pkg_basics.en.html">previous</a> ]
|
|
[ <a href="index.en.html#contents">Contents</a> ]
|
|
[ <a href="ch-basic_defs.en.html">1</a> ]
|
|
[ <a href="ch-getting.en.html">2</a> ]
|
|
[ <a href="ch-compat.en.html">3</a> ]
|
|
[ <a href="ch-software.en.html">4</a> ]
|
|
[ <a href="ch-ftparchives.en.html">5</a> ]
|
|
[ <a href="ch-pkg_basics.en.html">6</a> ]
|
|
[ 7 ]
|
|
[ <a href="ch-uptodate.en.html">8</a> ]
|
|
[ <a href="ch-kernel.en.html">9</a> ]
|
|
[ <a href="ch-customizing.en.html">10</a> ]
|
|
[ <a href="ch-support.en.html">11</a> ]
|
|
[ <a href="ch-contributing.en.html">12</a> ]
|
|
[ <a href="ch-redistrib.en.html">13</a> ]
|
|
[ <a href="ch-nexttime.en.html">14</a> ]
|
|
[ <a href="ch-faqinfo.en.html">15</a> ]
|
|
[ <a href="ch-uptodate.en.html">next</a> ]
|
|
</p>
|
|
|
|
<hr>
|
|
|
|
<p>
|
|
The Debian GNU/Linux FAQ
|
|
</p>
|
|
|
|
<address>
|
|
version 3.1.5, 17 January 2007<br>
|
|
<br>
|
|
Authors are listed at <a href="ch-faqinfo.en.html#s-authors">Debian FAQ Authors</a><br>
|
|
<br>
|
|
</address>
|
|
<hr>
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|