diff options
Diffstat (limited to 'includes/etch/install/doc/FAQ/html/ch-pkg_basics.html')
l---------[-rw-r--r--] | includes/etch/install/doc/FAQ/html/ch-pkg_basics.html | 864 |
1 files changed, 1 insertions, 863 deletions
diff --git a/includes/etch/install/doc/FAQ/html/ch-pkg_basics.html b/includes/etch/install/doc/FAQ/html/ch-pkg_basics.html index a26e8ee..98c97fe 100644..120000 --- a/includes/etch/install/doc/FAQ/html/ch-pkg_basics.html +++ b/includes/etch/install/doc/FAQ/html/ch-pkg_basics.html @@ -1,863 +1 @@ -<!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 - Basics of the Debian package management system</title> - -</head> - -<body> - -<p><a name="ch-pkg_basics"></a></p> -<hr> - -<p> -[ <a href="ch-ftparchives.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> ] -[ 6 ] -[ <a href="ch-pkgtools.en.html">7</a> ] -[ <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-pkgtools.en.html">next</a> ] -</p> - -<hr> - -<h1> -The Debian GNU/Linux FAQ -<br>Chapter 6 - Basics of the Debian package management system -</h1> - -<hr> - -<h2><a name="s-package"></a>6.1 What is a Debian package?</h2> - -<p> -Packages generally contain all of the files necessary to implement a set of -related commands or features. There are two types of Debian packages: -</p> -<ul> -<li> -<p> -<em>Binary packages</em>, which contain executables, configuration files, -man/info pages, copyright information, and other documentation. These packages -are distributed in a Debian-specific archive format (see <a -href="#s-deb-format">What is the format of a Debian binary package?, Section -6.2</a>); they are usually distinguished by having a '.deb' file extension. -Binary packages can be unpacked using the Debian utility <samp>dpkg</samp>; -details are given in its manual page. -</p> -</li> -</ul> -<ul> -<li> -<p> -<em>Source packages</em>, which consist of a <samp>.dsc</samp> file describing -the source package (including the names of the following files), a -<samp>.orig.tar.gz</samp> file that contains the original unmodified source in -gzip-compressed tar format and usually a <samp>.diff.gz</samp> file that -contains the Debian-specific changes to the original source. The utility -<samp>dpkg-source</samp> packs and unpacks Debian source archives; details are -provided in its manual page. -</p> -</li> -</ul> - -<p> -Installation of software by the package system uses "dependencies" -which are carefully designed by the package maintainers. These dependencies -are documented in the <samp>control</samp> file associated with each package. -For example, the package containing the GNU C compiler (<code>gcc</code>) -"depends" on the package <code>binutils</code> which includes the -linker and assembler. If a user attempts to install <code>gcc</code> without -having first installed <code>binutils</code>, the package management system -(dpkg) will send an error message that it also needs <code>binutils</code>, and -stop installing <code>gcc</code>. (However, this facility can be overridden by -the insistent user, see <code>dpkg(8)</code>.) See more in <a -href="#s-depends">What is meant by saying that a package <em>Depends</em>, -<em>Recommends</em>, <em>Suggests</em>, <em>Conflicts</em>, <em>Replaces</em> -or <em>Provides</em> another package?, Section 6.9</a> below. -</p> - -<p> -Debian's packaging tools can be used to: -</p> -<ul> -<li> -<p> -manipulate and manage packages or parts of packages, -</p> -</li> -</ul> -<ul> -<li> -<p> -aid the user in the break-up of packages that must be transmitted through a -limited-size medium such as floppy disks, -</p> -</li> -</ul> -<ul> -<li> -<p> -aid developers in the construction of package archives, and -</p> -</li> -</ul> -<ul> -<li> -<p> -aid users in the installation of packages which reside on a remote FTP site. -</p> -</li> -</ul> - -<hr> - -<h2><a name="s-deb-format"></a>6.2 What is the format of a Debian binary package?</h2> - -<p> -A Debian "package", or a Debian archive file, contains the executable -files, libraries, and documentation associated with a particular suite of -program or set of related programs. Normally, a Debian archive file has a -filename that ends in <samp>.deb</samp>. -</p> - -<p> -The internals of this Debian binary packages format are described in the -<code>deb(5)</code> manual page. This internal format is subject to change -(between major releases of Debian GNU/Linux), therefore please always use -<code>dpkg-deb(1)</code> for manipulating <samp>.deb</samp> files. -</p> - -<hr> - -<h2><a name="s-pkgname"></a>6.3 Why are Debian package file names so long?</h2> - -<p> -The Debian binary package file names conform to the following convention: -<foo>_<VersionNumber>-<DebianRevisionNumber>.deb -</p> - -<p> -Note that <samp>foo</samp> is supposed to be the package name. As a check, one -can learn the package name associated with a particular Debian archive file -(.deb file) in one of these ways: -</p> -<ul> -<li> -<p> -inspect the "Packages" file in the directory where it was stored at a -Debian FTP archive site. This file contains a stanza describing each package; -the first field in each stanza is the formal package name. -</p> -</li> -</ul> -<ul> -<li> -<p> -use the command <samp>dpkg --info foo_VVV-RRR.deb</samp> (where VVV and RRR are -the version and revision of the package in question, respectively). This -displays, among other things, the package name corresponding to the archive -file being unpacked. -</p> -</li> -</ul> - -<p> -The <samp>VVV</samp> component is the version number specified by the upstream -developer. There are no standards in place here, so the version number may -have formats as different as "19990513" and "1.3.8pre1". -</p> - -<p> -The <samp>RRR</samp> component is the Debian revision number, and is specified -by the Debian developer (or an individual user if he chooses to build the -package himself). This number corresponds to the revision level of the Debian -package, thus, a new revision level usually signifies changes in the Debian -Makefile (<samp>debian/rules</samp>), the Debian control file -(<samp>debian/control</samp>), the installation or removal scripts -(<samp>debian/p*</samp>), or in the configuration files used with the package. -</p> - -<hr> - -<h2><a name="s-controlfile"></a>6.4 What is a Debian control file?</h2> - -<p> -Specifics regarding the contents of a Debian control file are provided in the -Debian Policy Manual, section 5, see <a -href="ch-support.en.html#s-debiandocs">What other documentation exists on and -for a Debian system?, Section 11.1</a>. -</p> - -<p> -Briefly, a sample control file is shown below for the Debian package hello: -</p> - -<pre> - Package: hello - Priority: optional - Section: devel - Installed-Size: 45 - Maintainer: Adam Heath <doogie@debian.org> - Architecture: i386 - Version: 1.3-16 - Depends: libc6 (>= 2.1) - Description: The classic greeting, and a good example - The GNU hello program produces a familiar, friendly greeting. It - allows nonprogrammers to use a classic computer science tool which - would otherwise be unavailable to them. - . - Seriously, though: this is an example of how to do a Debian package. - It is the Debian version of the GNU Project's `hello world' program - (which is itself an example for the GNU Project). -</pre> - -<p> -The Package field gives the package name. This is the name by which the -package can be manipulated by the package tools, and usually similar to but not -necessarily the same as the first component string in the Debian archive file -name. -</p> - -<p> -The Version field gives both the upstream developer's version number and (in -the last component) the revision level of the Debian package of this program as -explained in <a href="#s-pkgname">Why are Debian package file names so long?, -Section 6.3</a>. -</p> - -<p> -The Architecture field specifies the chip for which this particular binary was -compiled. -</p> - -<p> -The Depends field gives a list of packages that have to be installed in order -to install this package successfully. -</p> - -<p> -The Installed-Size indicates how much disk space the installed package will -consume. This is intended to be used by installation front-ends in order to -show whether there is enough disk space available to install the program. -</p> - -<p> -The Section line gives the "section" where this Debian package is -stored at the Debian FTP sites. This is the name of a subdirectory (within one -of the main directories, see <a href="ch-ftparchives.en.html#s-dirtree">What -are all those directories at the Debian FTP archives?, Section 5.1</a>) where -the package is stored. -</p> - -<p> -The Priority indicates how important is this package for installation, so that -semi-intelligent software like dselect or console-apt can sort the package into -a category of e.g. packages optionally installed. See <a -href="#s-priority">What is an <em>Essential</em> <em>Required</em>, -<em>Important</em>, <em>Standard</em>, <em>Optional</em>, or <em>Extra</em> -package?, Section 6.7</a>. -</p> - -<p> -The Maintainer field gives the e-mail address of the person who is currently -responsible for maintaining this package. -</p> - -<p> -The Description field gives a brief summary of the package's features. -</p> - -<p> -For more information about all possible fields a package can have, please see -the Debian Policy Manual, section 5., "Control files and their -fields". -</p> - -<hr> - -<h2><a name="s-conffile"></a>6.5 What is a Debian conffile?</h2> - -<p> -Conffiles is a list of configuration files (usually placed in -<samp>/etc</samp>) that the package management system will not overwrite when -the package is upgraded. This ensures that local values for the contents of -these files will be preserved, and is a critical feature enabling the in-place -upgrade of packages on a running system. -</p> - -<p> -To determine exactly which files are preserved during an upgrade, run: -</p> - -<pre> - dpkg --status package -</pre> - -<p> -And look under "Conffiles:". -</p> - -<hr> - -<h2><a name="s-maintscripts"></a>6.6 What is a Debian preinst, postinst, prerm, and postrm script?</h2> - -<p> -These files are executable scripts which are automatically run before or after -a package is installed. Along with a file named <samp>control</samp>, all of -these files are part of the "control" section of a Debian archive -file. -</p> - -<p> -The individual files are: -</p> -<dl> -<dt>preinst</dt> -<dd> -<p> -This script executes before that package will be unpacked from its Debian -archive (".deb") file. Many 'preinst' scripts stop services for -packages which are being upgraded until their installation or upgrade is -completed (following the successful execution of the 'postinst' script). -</p> -</dd> -</dl> -<dl> -<dt>postinst</dt> -<dd> -<p> -This script typically completes any required configuration of the package -<samp>foo</samp> once <samp>foo</samp> has been unpacked from its Debian -archive (".deb") file. Often, 'postinst' scripts ask the user for -input, and/or warn the user that if he accepts default values, he should -remember to go back and re-configure that package as the situation warrants. -Many 'postinst' scripts then execute any commands necessary to start or restart -a service once a new package has been installed or upgraded. -</p> -</dd> -</dl> -<dl> -<dt>prerm</dt> -<dd> -<p> -This script typically stops any daemons which are associated with a package. -It is executed before the removal of files associated with the package. -</p> -</dd> -</dl> -<dl> -<dt>postrm</dt> -<dd> -<p> -This script typically modifies links or other files associated with -<samp>foo</samp>, and/or removes files created by the package. (Also see <a -href="#s-virtual">What is a Virtual Package?, Section 6.8</a>.) -</p> -</dd> -</dl> - -<p> -Currently all of the control files can be found in directory -<samp>/var/lib/dpkg/info</samp>. The files relevant to package -<samp>foo</samp> begin with the name "foo" and have file extensions -of "preinst", "postinst", etc., as appropriate. The file -<samp>foo.list</samp> in that directory lists all of the files that were -installed with the package <samp>foo</samp>. (Note that the location of these -files is a dpkg internal; you should not rely on it.) -</p> - -<hr> - -<h2><a name="s-priority"></a>6.7 What is an <em>Essential</em> <em>Required</em>, <em>Important</em>, <em>Standard</em>, <em>Optional</em>, or <em>Extra</em> package?</h2> - -<p> -Each Debian package is assigned a <em>priority</em> by the distribution -maintainers, as an aid to the package management system. The priorities are: -</p> -<ul> -<li> -<p> -<strong>Required</strong>: packages that are necessary for the proper -functioning of the system. -</p> - -<p> -This includes all tools that are necessary to repair system defects. You must -not remove these packages or your system may become totally broken and you may -probably not even be able to use dpkg to put things back. Systems with only -the Required packages are probably unusable, but they do have enough -functionality to allow the sysadmin to boot and install more software. -</p> -</li> -</ul> -<ul> -<li> -<p> -<strong>Important</strong> packages should be found on any Unix-like system. -</p> - -<p> -Other packages which the system will not run well or be usable without will be -here. This does <em>NOT</em> include Emacs or X11 or TeX or any other large -applications. These packages only constitute the bare infrastructure. -</p> -</li> -</ul> -<ul> -<li> -<p> -<strong>Standard</strong> packages are standard on any Linux system, including -a reasonably small but not too limited character-mode system. Tools are -included to be able to browse the web (using w3m), send e-mail (with mutt) and -download files from FTP servers. -</p> - -<p> -This is what will install by default if users do not select anything else. It -does not include many large applications, but it does include the Python -interpreter and some server software like OpenSSH (for remote administration), -Exim (for mail delivery, although it can be configured for local delivery -only), an identd server (pidentd) and the RPC portmapper -(<samp>portmap</samp>). It also includes some common generic documentation -that most users will find helpful. -</p> -</li> -</ul> -<ul> -<li> -<p> -<strong>Optional</strong> packages include all those that you might reasonably -want to install if you did not know what it was, or do not have specialized -requirements. -</p> - -<p> -This includes X11, a full TeX distribution, and lots of applications. -</p> -</li> -</ul> -<ul> -<li> -<p> -<strong>Extra</strong>: packages that either conflict with others with higher -priorities, are only likely to be useful if you already know what they are, or -have specialized requirements that make them unsuitable for -"Optional". -</p> -</li> -</ul> - -<p> -If you do a default Debian installation all the packages of priority -<strong>Standard</strong> or higher will be installed in your system. If you -select pre-defined tasks you will get lower priority packages too. -</p> - -<p> -Additionally, some packages are marked as <strong>Essential</strong> since they -are absolutely necessary for the proper functioning of the system. The package -management tools will refuse to remove these. -</p> - -<hr> - -<h2><a name="s-virtual"></a>6.8 What is a Virtual Package?</h2> - -<p> -A virtual package is a generic name that applies to any one of a group of -packages, all of which provide similar basic functionality. For example, both -the <samp>tin</samp> and <samp>trn</samp> programs are news readers, and should -therefore satisfy any dependency of a program that required a news reader on a -system, in order to work or to be useful. They are therefore both said to -provide the "virtual package" called <samp>news-reader</samp>. -</p> - -<p> -Similarly, <samp>smail</samp> and <samp>sendmail</samp> both provide the -functionality of a mail transport agent. They are therefore said to provide -the virtual package, "mail transport agent". If either one is -installed, then any program depending on the installation of a -<samp>mail-transport-agent</samp> will be satisfied by the existence of this -virtual package. -</p> - -<p> -Debian provides a mechanism so that, if more than one package which provide the -same virtual package is installed on a system, then system administrators can -set one as the preferred package. The relevant command is -<samp>update-alternatives</samp>, and is described further in <a -href="ch-customizing.en.html#s-diverse">Some users like mawk, others like gawk; -some like vim, others like elvis; some like trn, others like tin; how does -Debian support diversity?, Section 10.10</a>. -</p> - -<hr> - -<h2><a name="s-depends"></a>6.9 What is meant by saying that a package <em>Depends</em>, <em>Recommends</em>, <em>Suggests</em>, <em>Conflicts</em>, <em>Replaces</em> or <em>Provides</em> another package?</h2> - -<p> -The Debian package system has a range of package "dependencies" which -are designed to indicate (in a single flag) the level at which Program A can -operate independently of the existence of Program B on a given system: -</p> -<ul> -<li> -<p> -Package A <em>depends</em> on Package B if B absolutely must be installed in -order to run A. In some cases, A depends not only on B, but on a version of B. -In this case, the version dependency is usually a lower limit, in the sense -that A depends on any version of B more recent than some specified version. -</p> -</li> -</ul> -<ul> -<li> -<p> -Package A <em>recommends</em> Package B, if the package maintainer judges that -most users would not want A without also having the functionality provided by -B. -</p> -</li> -</ul> -<ul> -<li> -<p> -Package A <em>suggests</em> Package B if B contains files that are related to -(and usually enhance) the functionality of A. -</p> -</li> -</ul> -<ul> -<li> -<p> -Package A <em>conflicts</em> with Package B when A will not operate if B is -installed on the system. Most often, conflicts are cases where A contains -files which are an improvement over those in B. "Conflicts" are -often combined with "replaces". -</p> -</li> -</ul> -<ul> -<li> -<p> -Package A <em>replaces</em> Package B when files installed by B are removed and -(in some cases) over-written by files in A. -</p> -</li> -</ul> -<ul> -<li> -<p> -Package A <em>provides</em> Package B when all of the files and functionality -of B are incorporated into A. This mechanism provides a way for users with -constrained disk space to get only that part of package A which they really -need. -</p> -</li> -</ul> - -<p> -More detailed information on the use of each these terms can be found in the -Policy manual. -</p> - -<hr> - -<h2><a name="s-pre-depends"></a>6.10 What is meant by Pre-Depends?</h2> - -<p> -"Pre-Depends" is a special dependency. In the case of most packages, -<samp>dpkg</samp> will unpack its archive file (i.e., its <samp>.deb</samp> -file) independently of whether or not the files on which it depends exist on -the system. Simplistically, unpacking means that <samp>dpkg</samp> will -extract the files from the archive file that were meant to be installed on your -file system, and put them in place. If those packages <em>depend</em> on the -existence of some other packages on your system, <samp>dpkg</samp> will refuse -to complete the installation (by executing its "configure" action) -until the other packages are installed. -</p> - -<p> -However, for some packages, <samp>dpkg</samp> will refuse even to unpack them -until certain dependencies are resolved. Such packages are said to -"Pre-depend" on the presence of some other packages. The Debian -project provided this mechanism to support the safe upgrading of systems from -<samp>a.out</samp> format to <samp>ELF</samp> format, where the <em>order</em> -in which packages were unpacked was critical. There are other large upgrade -situations where this method is useful, e.g. the packages with the required -priority and their LibC dependency. -</p> - -<p> -As before, more detailed information about this can be found in the Policy -manual. -</p> - -<hr> - -<h2><a name="s-pkgstatus"></a>6.11 What is meant by <em>unknown</em>, <em>install</em>, <em>remove</em> <em>purge</em> and <em>hold</em> in the package status?</h2> - -<p> -These "want" flags tell what the user wanted to do with a package (as -indicated either by the user's actions in the "Select" section of -<samp>dselect</samp>, or by the user's direct invocations of -<samp>dpkg</samp>). -</p> - -<p> -Their meanings are: -</p> -<ul> -<li> -<p> -unknown - the user has never indicated whether he wants the package -</p> -</li> -</ul> -<ul> -<li> -<p> -install - the user wants the package installed or upgraded -</p> -</li> -</ul> -<ul> -<li> -<p> -remove - the user wants the package removed, but does not want to remove any -existing configuration files. -</p> -</li> -</ul> -<ul> -<li> -<p> -purge - the user wants the package to be removed completely, including its -configuration files. -</p> -</li> -</ul> -<ul> -<li> -<p> -hold - the user wants this package not to be processed, i.e., he wants to keep -the current version with the current status whatever that is. -</p> -</li> -</ul> - -<hr> - -<h2><a name="s-puttingonhold"></a>6.12 How do I put a package on hold?</h2> - -<p> -There are three ways of holding back packages, with dpkg, aptitude or with -dselect. -</p> - -<p> -With dpkg, you just have to export the list of package selections, with: -</p> - -<pre> - dpkg --get-selections \* > selections.txt -</pre> - -<p> -Then edit the resulting file <code>selections.txt</code>, change the line -containing the package you wish to hold, e.g. <code>libc6</code>, from this: -</p> - -<pre> - libc6 install -</pre> - -<p> -to this: -</p> - -<pre> - libc6 hold -</pre> - -<p> -Save the file, and reload it into dpkg database with: -</p> - -<pre> - dpkg --set-selections < selections.txt -</pre> - -<p> -With aptitude, you can hold a package using -</p> - -<pre> - aptitude hold package_name -</pre> - -<p> -and remove the hold with -</p> - -<pre> - aptitude unhold package_name -</pre> - -<p> -With dselect, you just have to enter the [S]elect screen, find the package you -wish to hold in its present state, and press the `=' key (or `H'). The changes -will go live immediately after you exit the [S]elect screen. -</p> - -<hr> - -<h2><a name="s-sourcepkgs"></a>6.13 How do I install a source package?</h2> - -<p> -Debian source packages can't actually be "installed", they are just -unpacked in whatever directory you want to build the binary packages they -produce. -</p> - -<p> -Source packages are distributed on most of the same mirrors where you can -obtain the binary packages. If you set up your APT's -<code>sources.list(5)</code> to include the appropriate "deb-src" -lines, you'll be able to easily download any source packages by running -</p> - -<pre> - apt-get source foo -</pre> - -<p> -To help you in actually building the source package, Debian source package -provide the so-called build-dependencies mechanism. This means that the source -package maintainer keeps a list of other packages that are required to build -their package. To see how this is useful, run -</p> - -<pre> - apt-get build-dep foo -</pre> - -<p> -before building the source. -</p> - -<hr> - -<h2><a name="s-sourcebuild"></a>6.14 How do I build binary packages from a source package?</h2> - -<p> -You will need all of foo_*.dsc, foo_*.tar.gz and foo_*.diff.gz to compile the -source (note: there is no .diff.gz for some packages that are native to -Debian). -</p> - -<p> -Once you have them (<a href="#s-sourcepkgs">How do I install a source package?, -Section 6.13</a>), if you have the <code>dpkg-dev</code> package installed, the -following command: -</p> - -<pre> - dpkg-source -x foo_version-revision.dsc -</pre> - -<p> -will extract the package into a directory called <samp>foo-version</samp>. -</p> - -<p> -If you want just to compile the package, you may cd into -<samp>foo-version</samp> directory and issue the command -</p> - -<pre> - dpkg-buildpackage -rfakeroot -b -</pre> - -<p> -to build the package (note that this also requires the <code>fakeroot</code> -package), and then -</p> - -<pre> - dpkg -i ../foo_version-revision_arch.deb -</pre> - -<p> -to install the newly-built package(s). -</p> - -<hr> - -<h2><a name="s-creatingdebs"></a>6.15 How do I create Debian packages myself?</h2> - -<p> -For more detailed description on this, read the New Maintainers' Guide, -available in the <code>maint-guide</code> package, or at <code><a -href="http://www.debian.org/doc/devel-manuals#maint-guide">http://www.debian.org/doc/devel-manuals#maint-guide</a></code>. -</p> - -<hr> - -<p> -[ <a href="ch-ftparchives.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> ] -[ 6 ] -[ <a href="ch-pkgtools.en.html">7</a> ] -[ <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-pkgtools.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> - +ch-pkg_basics.en.html
\ No newline at end of file |