summaryrefslogtreecommitdiff
path: root/includes/common/doc/FAQ/html/ch-pkgtools.en.html
diff options
context:
space:
mode:
Diffstat (limited to 'includes/common/doc/FAQ/html/ch-pkgtools.en.html')
-rw-r--r--includes/common/doc/FAQ/html/ch-pkgtools.en.html936
1 files changed, 936 insertions, 0 deletions
diff --git a/includes/common/doc/FAQ/html/ch-pkgtools.en.html b/includes/common/doc/FAQ/html/ch-pkgtools.en.html
new file mode 100644
index 000000000..114bb9fe2
--- /dev/null
+++ b/includes/common/doc/FAQ/html/ch-pkgtools.en.html
@@ -0,0 +1,936 @@
+<!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 &quot;blurf&quot; (or a group of files named
+&quot;blurf*&quot; 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) &quot;foo*&quot;: <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 &quot;Obsolete and Locally Created Packages&quot;.
+</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>&lt;enter&gt;</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 (&quot;info&quot;) 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 &quot;Access Method&quot; 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 &quot;Packages.gz&quot; 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 15400 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 &quot;All Packages&quot;. If you try
+that, your system will instead be reduced to the initial installed base
+packages.
+</p>
+</dd>
+</dl>
+<dl>
+<dt>to be put &quot;on hold&quot;</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 &quot;Install&quot; menu
+item to unpack and configure the selected packages. Alternatively, users
+wishing to remove files can choose the &quot;Remove&quot; menu item. At any
+point, users can choose &quot;Quit&quot; 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
+&quot;foo*&quot;</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 &quot;foo&quot; 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/sarge</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.3, 25 April 2006<br>
+<br>
+Authors are listed at <a href="ch-faqinfo.en.html#s-authors">Debian FAQ Authors</a><br>
+<br>
+</address>
+<hr>
+
+</body>
+
+</html>
+