From: Manoj Srivastava
- The current version of this document is always accessible from the
- Debian FTP server
In addition, this manual is distributed via the Debian package @@ -825,8 +828,11 @@ archive.
- Package names must only consist of lower case letters, digits (0-9), - plus (+) or minus (-) signs, and periods (.).
+ Package names must consist of lower case letters (a-z), + digits (0-9), plus (+) and minus (-) signs, and periods + (.). They must be at least two characters long and must + contain at least one letter. +
The package name is part of the file name of the
@@ -838,29 +844,42 @@
- Every package must have a maintainer (the maintainer may
- be one person or a group of people reachable from a common
- email address, such as a mailing list). The maintainer is
- responsible for ensuring that the package is placed in
- the appropriate distribution
+ Every package must have a Debian maintainer (the
+ maintainer may be one person or a group of people
+ reachable from a common email address, such as a mailing
+ list). The maintainer is responsible for ensuring that
+ the package is placed in the appropriate distributions.
The maintainer must be specified in the
- Maintainer control field with the correct name
- and a working email address for the Debian maintainer of
- the package. If one person maintains several packages
- he/she should try to avoid having different forms of their
- name and email address in different Maintainer
- fields.
If the maintainer of a package quits from the Debian
- project the Debian QA Group
-
+ The detailed procedure for doing this gracefully can
+ be found in the Debian Developer's Reference, either
+ in the developers-reference package, or on
+ the Debian FTP server
+
- The description should be written so that it tells the user - what they need to know to decide whether to install the - package. This description should not just be copied from - the blurb for the program. Instructions for configuring - or using the package should not be included -- that is what - installation scripts, manual pages, Info files, etc. are - for. Copyright statements and other administrivia should - not be included -- that is what the copyright file is - for.
+ The description should be written so that it gives the + system administrator enough information to decide whether + to install the package. This description should not just + be copied verbatim from the program's documentation. + Instructions for configuring or using the package should + not be included -- that is what installation scripts, + manual pages, info files, etc., are for. Copyright + statements and other administrivia should not be included + either -- that is what the copyright file is for. @@ -921,13 +940,13 @@- Sometimes, there are several packages doing more-or-less - the same job. In this case, it's useful to define a - virtual package whose name describes the function - the packages have. (The virtual packages just exist - logically, not physically--that's why they are called - virtual.) The packages with this particular - function will then provide the virtual + Sometimes, there are several packages which offer + more-or-less the same functionality. In this case, it's + useful to define a virtual package whose name + describes that common functionality. (The virtual + packages only exist logically, not physically--that's why + they are called virtual.) The packages with this + particular function will then provide the virtual package. Thus, any other package requiring that function can simply depend on the virtual package without having to specify all possible packages individually.
@@ -983,11 +1002,11 @@ for a system.
- Since these packages can not easily be removed (you'll
- have to specify an extra force option to
-
Since dpkg will not prevent upgrading of other packages while an essential package is in an unconfigured - state, all essential packages must supply all + state, all essential packages must supply all of their core functionality even when unconfigured. If the package cannot satisfy this requirement it must not be tagged as essential, and any packages depending on this @@ -1006,9 +1025,10 @@
You must not tag any packages essential before this has been discussed on the debian-devel - mailing and a consensus about doing that has been - reached.
- + mailing list and a consensus about doing that has been + reached. + +- Note, that , in general applies to package + Note that in general applies to package maintainer scripts, too.
@@ -1048,7 +1068,8 @@ specify a conflict against earlier versions of something that previously did not use
- 2.5% of Debian packages
- [
With this increasing number of packages using
- debconf, plus the existance of a nascent second
- implementation of the Debian configuration
- management system (
- Debconf or another tool that implements the Debian
- Configuration management specification will also be
- installed, and any versioned dependancies on it will
- be satisfied before preconfiguration begins.
+
@@ -1144,7 +1169,7 @@ important (they belong in /usr/share/doc/package/copyright); neither do instructions on how to use a program (these - should be in on line documentation, where all the users + should be in on-line documentation, where all the users can see them).
@@ -1166,22 +1191,21 @@
- You should specify the most recent version of the - packaging standards with which your package complies in - the source package's Standards-Version field.
- -- This value will be used to file bug reports automatically - if your package becomes too much out of date.
+ In the source package's Standards-Version control + field, you must specify the most recent version number of + this policy document with which your package complies. + The current version number is &version;. +- The value corresponds to a version of the Debian manuals, - as can be found on the title page or page headers and - footers (depending on the format).
+ This information may be used to file bug reports + automatically if your package becomes too much out of + date. +The version number has four components--major and minor - number and major and minor patch level. When the + version number and major and minor patch level. When the standards change in a way that requires every package to change the major number will be changed. Significant changes that will require work in many packages will be @@ -1189,22 +1213,24 @@ level will be changed for any change to the meaning of the standards, however small; the minor patch level will be changed when only cosmetic, typographical or other edits - which do not change the meaning are made, or changes which - do not affect the contents of packages.
+ are made which neither change the meaning of the document + nor affect the contents of packages.
- For package maintainers, only the first 3 digits of the
- manual version are significant in representing the
- Standards-Version, and either these 3 digits or
- the complete 4 digits may be specified.
+ Thus only the first three components of the policy version
+ are significant in the Standards-Version control
+ field, and so either these three components or the all
+ four components may be specified.
- In the past, people specified 4 digits in the
- Standards-Version field, like `2.3.0.0'. Since any
- `patch-level changes' don't introduce new policy, it
- was thought it would be better to relax policy and
- only require that the first 3 digits are specified. (4
- digits may still be used if someone wants to do so.)
+ In the past, people specified the full version number
+ in the Standards-Version field, for example `2.3.0.0'.
+ Since minor patch-level changes don't introduce new
+ policy, it was thought it would be better to relax
+ policy and only require the first 3 components to be
+ specified, in this example `2.3.0'. All four
+ components may still be used if someone wishes to do
+ so.
+ See the file upgrading-checklist for + information about policy which has changed between + different versions of this document. +
+This allows maintaining the list separately from the policy documents (the list does not need the kind of control that the policy - documents do) + documents do).
Having a separate package allows one to install - the build essential packages on a machine, as - well as allowing other packages (think task - packages) to bring in the build-essential - packages using the depends relation + the build-essential packages on a machine, as + well as allowing other packages such as task + packages to require installation of the + build-essential packages using the depends + relation.
The separate package allows bug reports against - the package to be categorized separately from - the policy management process that uses the BTS + the list to be categorized separately from + the policy management process in the BTS.
+ The reason for this is that dependencies change, and
+ you should list all those packages, and only
+ those packages that you need directly. What
+ others need is their business. For example, if you
+ only link against libimlib, you will need to
+ build-depend on
If build-time dependencies are specified, it must be possible to build the package and produce working binaries - on a system with the build-essential packages installed - and satisfying the build-time relationships (including any - implied relationships). This - means in particular that version clauses should be used - rigorously in build-time relationships so that one cannot - produce bad or inconsistently configured packages when the - relationships are properly satisfied. + on a system with only essential and build-essential + packages installed and also those required to satisfy the + build-time relationships (including any implied + relationships). In particular, this means that version + clauses should be used rigorously in build-time + relationships so that one cannot produce bad or + inconsistently configured packages when the relationships + are properly satisfied.
- If changes to the source code are made that are generally - applicable, they should be sent to the upstream authors - in whatever form they prefer so as to be included in the - upstream version of the package.
+ If changes to the source code are made that are not + specific to the needs of the Debian system, they should be + sent to the upstream authors in whatever form they prefer + so as to be included in the upstream version of the + package.
If you need to configure the package differently for
Debian or for Linux, and the upstream source doesn't
- provide a way to configure it the way you need to, you
- should add such configuration facilities (for example, a new
-
You should make sure that the
- In non-experimental packages you must only use a format for
+ In non-experimental packages you must use a format for
debian/changelog which is supported by the most
- recent released version of
+ If you wish to use an alternative format, you may do
+ so as long as you include a parser for it in your
+ source package. The parser must have an API
+ compatible with that expected by
+
When
- Debian packages should be ported to include
-