]> git.donarmstrong.com Git - debian/debian-policy.git/blob - upgrading-checklist.sgml
Merge branch 'master' into bug104373-rra
[debian/debian-policy.git] / upgrading-checklist.sgml
1 <!doctype debiandoc system>
2
3 <debiandoc>
4   <book> 
5     <title> Policy checklist for upgrading your packages </title>
6       <author> Bill Allombert <email/ballombe@debian.org/ </author>
7       <author> Josip Rodin </author>
8       <author> Julian Gilbey </author>
9       <author> Russ Allbery </author>
10       <author> Manoj Srivastava <email/srivasta@debian.org/
11
12 <chapt> About the checklist
13 <p>
14 The checklist below has been created to simplify the upgrading process
15 of old packages.  Note that this list is not "official"; it simply
16 gives an indication of what has changed and whether you are likely to
17 need to make changes to your package in light of this.  If you have
18 doubts about a certain topic, if you need more details, or if you
19 think some other package does not comply with policy, please refer to
20 the Policy Manual itself.  All of the changes from version 3.0.0
21 onwards indicate which section of the Policy Manual discusses the
22 issue: [3.4] means section 3.4.  The section numbering changed when
23 the packaging manual was incorporated into policy; the section numbers
24 used below refer to the current version.
25 <p>
26 Here is how the check list works: Check which policy version your
27 package was checked against last (indicated in the "Standards-Version"
28 field of the source package).  Then move upwards until the top and
29 check which of the items on the list might concern your package.  Note
30 which sections of policy discuss this, and then check out the Policy
31 Manual for details.  If you are upgrading from Policy version &lt; 2.5.0,
32 it may be easier to check through the whole of policy instead of
33 picking your way through this list.
34
35 <chapt> The checklist
36
37 <sect> Version 3.9.1.0
38 <p>
39
40 Not yet released.
41
42 </p><p><taglist>
43 <tag>12.5</tag>
44   <item>The GPL version 1 is now included in common-licenses and should be
45   referenced from there instead of included in the <file>copyright</file>
46   file.
47   </item>
48 </taglist></p>
49
50 <sect> Version 3.9.0.0
51 <p>
52
53 Released June, 2010.
54
55 </p><p><taglist>
56 <tag>4.4, 5.6.15</tag>
57   <item>The required format for the date in a changelog entry and in the
58   Date control field is now precisely specified.
59   </item>
60 <tag>5.1</tag>
61   <item>A control paragraph must not contain more than one instance of a
62   particular field name.
63   </item>
64 <tag>5.4, 5.5, 5.6.24</tag>
65   <item>Document and recommend the <tt>Checksums-Sha1</tt>
66   and <tt>Checksums-Sha256</tt> fields in <file>*.dsc</file>
67   and <file>*.changes</file> files.
68   </item>
69 <tag>5.5, 5.6.16</tag>
70   <item>The <tt>Format</tt> field of <file>.changes</file> files is now
71   1.8.  The <tt>Format</tt> field syntax for source
72   package <file>.dsc</file> files allows a subtype in parentheses, and it
73   is used for a different purpose than the <tt>Format</tt> field
74   for <file>.changes</file> files.
75   </item>
76 <tag>5.6.2</tag>
77   <item>The syntax of the <tt>Maintainer</tt> field is now must rather
78   than should.
79   </item>
80 <tag>5.6.3</tag>
81   <item>The comma separating entries in <tt>Uploaders</tt> is now must
82   rather than should.
83   </item>
84 <tag>5.6.8, 7.1, 11.1.1</tag>
85   <item>Architecture wildcards may be used in addition to specific
86   architectures in <file>debian/control</file> and <file>*.dsc</file>
87   Architecture fields, and in architecture restrictions in build
88   relationships.
89   </item>
90 <tag>6.3</tag>
91   <item>Maintainer scripts are no longer guaranteed to run with a
92   controlling terminal and must be able to fall back to noninteractive
93   behavior (debconf handles this).  Maintainer scripts may abort if there
94   is no controlling terminal and no reasonable default for a high-priority
95   question, but should avoid this if possible.
96   </item>
97 <tag>7.3, 7.6.1</tag>
98   <item><tt>Breaks</tt> should be used with <tt>Replaces</tt> for moving
99   files between packages.
100   </item>
101 <tag>7.4</tag>
102   <item><tt>Breaks</tt> should normally be used instead
103   of <tt>Conflicts</tt> for transient issues and moving files between
104   packages.  New documentation of when each should be used.
105   </item>
106 <tag>7.5</tag>
107   <item>Use <tt>Conflicts</tt> with <tt>Provides</tt> if only one provider
108   of a virtual facility can be installed at a time.
109   </item>
110 <tag>8.4</tag>
111   <item>All shared library development files are no longer required to be
112   in the <tt>-dev</tt> package, only be available when the <tt>-dev</tt>
113   package is installed.  This allows the <tt>-dev</tt> package to be split
114   as long as it depends on the additional packages.
115   </item>
116 <tag>9.2.2</tag>
117   <item>The UID range of user accounts is extended to 1000-59999.
118   </item>
119 <tag>9.3.2, 10.4</tag>
120   <item><file>init.d</file> scripts are a possible exception from the
121   normal requirement to use <tt>set -e</tt> in each shell script.
122   </item>
123 <tag>12.5</tag>
124   <item>The UCB BSD license was removed from the list of licenses that
125   should be referenced from <file>/usr/share/common-licenses/BSD</file>.
126   It should instead be included directly
127   in <file>debian/copyright</file>, although it will still be in
128   common-licenses for the time being.
129   </item>
130 <tag>debconf</tag>
131   <item>Add <tt>SETTITLE</tt> (which has been supported for some time).
132   Like <tt>TITLE</tt> but takes a template instead of a string to allow
133   translation.
134   </item>
135 <tag>perl</tag>
136   <item><package>perl-base</package> now
137   provides <package>perlapi-<var>abiname</var></package> instead of a
138   package based solely on the Perl version.  Perl packages must now depend
139   on <package>perlapi-$Config{debian_abi}</package>, falling back
140   on <tt>$Config{version}</tt> if <tt>$Config{debian_abi}</tt> is not set.
141   </item>
142 <tag>perl</tag>
143   <item>Packages using <file>Makefile.PL</file> should use
144   <tt>DESTDIR</tt> rather than <tt>PREFIX</tt> to install into the package
145   staging area.  <tt>PREFIX</tt> only worked due to a Debian-local patch.
146   </item>
147 </taglist></p>
148
149 <sect> Version 3.8.4.0
150 <p>
151
152 Release Jan 2010.
153
154 </p><p><taglist>
155 <tag>9.1.1</tag>
156   <item> An FHS exception has been granted for multiarch libraries.
157   Permitting files to instead be installed to <file>/lib/triplet</file> and
158   <file>/usr/lib/triplet</file> directories.
159   </item>
160 <tag>10.6</tag>
161   <item>Explicitly state that packages may not contain named pipes and
162   should instead create them in postinst and remove them in prerm or postrm.
163   </item>
164 <tag>9.1.1</tag>
165   <item><file>/sys</file> and <file>/selinux</file> directories are explicitly
166   allowed as an exception to the FHS.
167   </item>
168 </taglist></p>
169
170 <sect> Version 3.8.3.0
171 <p>
172 Released Aug 2009.
173
174 </p><p><taglist>
175 <tag>4.9</tag>
176   <item>Add DEB_*_ARCH_CPU and DEB_*_ARCH_OS variables and
177   recommend them over GNU-style variables for that information.
178   </item>
179 <tag>5.6.8</tag>
180   <item>Source package Architecture fields may contain <em/all/ in
181   combination with other architectures.  Clarify when <em/all/ and <em/any/
182   may be used in different versions of the field.
183   </item>
184 <tag>5.6.14</tag>
185   <item>The Debian archive software does not support uploading
186   to multiple distributions with one <file>*.changes</file> file.
187   </item>
188 <tag>5.6.19</tag>
189   <item>The Binary field may span multiple lines.
190   </item>
191 <tag>10.2</tag>
192   <item>Remove the permission for shared library packages to
193   install libraries in a non-standard location and modify <file/ld.so.conf/.
194   Packages should either be installed in a standard library directory
195   or packages using them should be built with RPATH.
196   </item>
197 <tag>11.8.7</tag>
198   <item>Clarify installation directories for X programs and
199   remove the requirement to pre-depend on x11-common before installing
200   into <file>/usr/include/X11</file> and <file>/usr/lib/X11</file>.
201   </item>
202 <tag>12.1</tag>
203   <item>Remove the requirement that all characters in a manual
204   page be representable in the legacy encoding for that language.
205   </item>
206 <tag>12.1</tag>
207   <item>Localized man pages should either be kept up-to-date with
208   the original version or warn that they're not up-to-date, either
209   with warning text or by showing missing or changed portions in the
210   original language.
211   </item>
212 <tag>12.2</tag>
213   <item>install-info is now handled via triggers so packages no
214   longer need to invoke it in maintainer scripts.  Info documents
215   should now have directory sections and entries in the document.
216   Packages containing info documents should add a dependency to
217   support partial upgrades.
218   </item>
219 <tag>perl</tag>
220   <item>The requirement for Perl modules to have a versioned
221   Depend and Build-Depend on <tt>perl &gt;= 5.6.0-16</tt> has been removed.
222   </item>
223 </taglist></p>
224
225 <sect> Version 3.8.2.0
226 <p>
227
228 Released Jun 2009.
229
230 </p><p><taglist>
231 <tag>2.4</tag>
232   <item>The list of archive sections has been significantly expanded.  See
233   <url id="http://lists.debian.org/debian-devel-announce/2009/03/msg00010.html"
234   name="this debian-devel-announce message">
235   for the list of new sections and rules for how to categorize
236   packages.                                                
237   </item>
238 <tag>3.9.1</tag>
239   <item>All packages must use debconf or equivalent for user prompting,
240   though essential packages or their dependencies may also fall
241   back on other methods.                                   
242   </item>
243 <tag>5.6.1</tag>
244   <item>The requirements for source package names are now explicitly
245   spelled out.
246   </item>
247 <tag>9.1</tag>
248   <item>Legacy XFree86 servers no longer get a special exception from the
249   FHS permitting <file>/etc/X11/XF86Config-4</file>.
250   </item>
251 <tag>9.1.3</tag>
252   <item>Removed obsolete dependency requirements for packages that use
253   <file>/var/mail</file>.
254   </item>
255 <tag>11.8.5</tag>
256   <item>Speedo fonts are now deprecated.  The X backend was disabled
257   starting in lenny.                                       
258   </item>
259 <tag>12.5</tag>
260   <item>The GNU Free Documentation License version 1.3 is included in
261   common-licenses and should be referenced from there.     
262   </item>
263 </taglist></p>
264
265 <sect> Version 3.8.1.0
266 <p>
267
268 Released  Mar 2009.
269
270 </p><p><taglist>
271 <tag>3.8</tag>
272   <item>Care should be taken when adding functionality to essential and
273   such additions create an obligation to support that functionality
274   in essential forever unless significant work is done.    
275   </item>
276 <tag>4.4</tag>
277   <item>Changelog files must be encoded in UTF-8.                
278   </item>
279 <tag>4.4</tag>
280   <item>Tighten some format requirements for changelog files from a should
281   to a must.                                               
282   </item>
283 <tag>4.4.1</tag>
284   <item>Remove alternative changelog formats.  Debian only supports one
285   changelog format for the Debian Archive.                 
286   </item>
287 <tag>4.9.1</tag>
288   <item>New nocheck option for DEB_BUILD_OPTIONS indicating any build-time
289   test suite provided by the package should not be run.    
290   </item>
291 <tag>5.1</tag>
292   <item>All control files must be encoded in UTF-8.              
293   </item>
294 <tag>5.2</tag>
295   <item>debian/control allows comment lines starting with # with no
296   preceding whitespace.                                    
297   </item>
298 <tag>9.3</tag>
299   <item>Init scripts ending in .sh are not handled specially.  They are not
300   sourced and are not guaranteed to be run by <prgn>/bin/sh</prgn> regardless
301   of the #! line.  This brings Policy in line with the long-standing
302   behavior of the init system in Debian.
303   </item>
304 <tag>9.3.2</tag>
305   <item>The start action of an init script must exit successfully and not
306   start the daemon again if it's already running.          
307   </item>
308 <tag>9.3.2</tag>
309   <item><file>/var/run</file> and <file>/var/lock</file> may be mounted as
310   temporary filesystems, and init scripts must therefore create any necessary
311   subdirectories dynamically.                                             
312   </item>
313 <tag>10.4</tag>
314   <item> <file>/bin/sh</file> scripts may assume that local can take multiple
315    variable arguments and supports assignment.                       
316   </item>
317 <tag>11.6</tag>
318   <item>User mailboxes may be mode 600 and owned by the user rather than
319   mode 660, owned by user, and group mail.                 
320   </item>
321 </taglist></p>
322
323 <sect> Version 3.8.0.0
324 <p>
325
326 Released  Jun 2008.
327
328 </p><p><taglist>
329 <tag>2.4, 3.7</tag>
330 <item>The base section has been removed.  contrib and non-free have been
331   removed from the section list; they are only categories.  The base
332   system is now defined by priority.                       
333 <tag>4.9</tag>
334 <item>If <prgn>dpkg-source -x</prgn> doesn't provide the source that will be
335   compiled, a debian/rules patch target is recommended and should do whatever
336   else is necessary.
337 <tag>4.9.1, 10.1</tag>
338 <item>Standardized the format of DEB_BUILD_OPTIONS.  Specified permitted
339   characters for tags, required that tags be whitespace-separated,
340   allowed packages to assume non-conflicting tags, and required
341   unknown flags be ignored.                                
342 <tag>4.9.1</tag>
343 <item>Added parallel=n to the standardized DEB_BUILD_OPTIONS tags,
344   indicating that a package should be built using up to n parallel
345   processes if the package supports it                     
346 <tag>4.13</tag>
347 <item>Debian packages should not use convenience copies of code from other
348   packages unless the included package is explicitly intended to be
349   used that way.                                           
350 <tag>4.14</tag>
351 <item>If dpkg-source -x doesn't produce source ready for editing and
352   building with dpkg-buildpackage, packages should include a
353   <file>debian/README.source</file> file explaining how to generate
354   the patched source, add a new modification, and remove an existing
355   modification.  This file may also be used to document packaging a
356   new upstream release and any other complexity of the Debian build
357   process.                                                 
358 <tag>5.6.3</tag>
359 <item>The Uploaders field in debian/control may be wrapped.    
360 <tag>5.6.12</tag>
361 <item>An empty Debian revision is equivalent to a Debian revision of 0 in
362   a version number.                                        
363 <tag>5.6.23</tag>
364 <item>New Homepage field for upstream web sites.               
365 <tag>6.5, 6.6, 7</tag>
366 <item>The Breaks field declares that this package breaks another and
367   prevents installation of the breaking package unless the package
368   named in Breaks is deconfigured first.  This field should not be
369   used until the dpkg in Debian stable supports it.        
370 <tag>8.1, 8.2</tag>
371 <item>Clarify which files should go into a shared library package, into a
372   separate package, or into the -dev package.  Suggest -tools instead
373   of -runtime for runtime support programs, since that naming is more
374   common in Debian.                                        
375 <tag>9.5</tag>
376 <item>Files in <file>/etc/cron.{hourly,daily,weekly,monthly}</file> must be
377   configuration files (upgraded from should).  Mention the hourly
378   directory.                                               
379 <tag>11.8.6</tag>
380 <item>Packages providing <file>/etc/X11/Xresources</file> files need not
381   conflict with  <tt> xbase (&lt;&lt; 3.3.2.3a-2)</tt>, which is
382   long-obsolete.           
383 <tag>12.1</tag>
384 <item>Manual pages in locale-specific directories should use either the
385   legacy encoding for that directory or UTF-8.  Country names should
386   not be included in locale-specific manual page directories unless
387   indicating a significant difference in the language.  All
388   characters in the manual page source should be representable in the
389   legacy encoding for a locale even if the man page is encoded in
390   UTF-8.                                                   
391 <tag>12.5</tag>
392 <item>The Apache 2.0 license is now in common-licenses and should be
393   referenced rather than quoted in <file>debian/copyright</file>.
394 <tag>12.5</tag>
395 <item>Packages in contrib and non-free should state in the copyright file
396   that the package is not part of Debian GNU/Linux and briefly
397   explain why.                                             
398 <tag>debconf</tag>
399 <item>Underscore (_) is allowed in debconf template names.     
400 </taglist></p>
401
402 <sect> Version 3.7.3.0
403 <p>
404
405 Released  Dec 2007.
406
407 </p><p><taglist>
408 <tag>5.6.12</tag>
409 <item>Package version numbers may contain tildes, which sort before
410   anything, even the end of a part.                        
411 <tag>10.4</tag>
412 <item>Scripts may assume that <file>/bin/sh</file> supports local (at a basic
413   level) and that its test builtin (if any) supports -a and -o binary
414   logical operators.                                       
415 <tag>8.5</tag>
416 <item>The substitution variable ${binary:Version} should be used in place
417   of ${Source-Version} for dependencies between packages of the same
418   library.                                                 
419 <tag>menu policy</tag>
420 <item>Substantial reorganization and renaming of sections in the Debian
421   menu structure.  Packages with menu entries should be reviewed to
422   see if the menu section has been renamed or if one of the new
423   sections would be more appropriate.                      
424 <tag>5.6.1</tag>
425 <item>The Source field in a .changes file may contain a version number
426   in parentheses.                                          
427 <tag>5.6.17</tag>
428 <item>The acceptable values for the Urgency field are low, medium, high,
429   critical, or emergency.                                  
430 <tag>8.6</tag>
431 <item>The shlibs file now allows an optional type field, indicating the
432   type of package for which the line is valid.  The only currently
433   supported type is udeb, used with packages for the Debian
434   Installer.                                               
435 <tag>3.9.1</tag>
436 <item>Packages following the Debian Configuration management
437   specification must allow for translation of their messages by using
438   a gettext-based system such as po-debconf.               
439 <tag>12.5</tag>
440 <item>GFDL 1.2, GPL 3, and LGPL 3 are now in common-licenses and should
441   be referenced rather than quoted in debian/copyright.
442 </taglist></p>
443
444 <sect> Version 3.7.2.2
445 <p>
446
447 Released  Oct 2006.
448
449 </p><p><taglist>
450 <tag>6.1</tag> <item>Maintainer scripts must not be world writeable (up from a
451     should to a must)</item>   
452 </taglist></p>
453
454 <sect> Version 3.7.2.0
455 <p>
456
457 Released  Apr 2006.
458
459 </p><p><taglist>
460 <tag>11.5</tag> <item>Revert the cgi-lib change. </item>
461 </taglist></p>
462
463 <sect> Version 3.7.1.0
464 <p>
465
466 Released  Apr 2006.
467
468 </p><p><taglist>
469 <tag>10.2</tag>
470 <item>It is now possible to create shared libraries without
471   relocatable code (using -fPIC) in certain exceptional cases,
472   provided some procedures are followed, and for creating static
473   libraries with relocatable code (again, using -fPIC).
474   Discussion on debian-devel@lists.debian.org, getting a rough
475   consensus, and documenting it in README.Debian constitute most
476   of the process.                                          
477 <tag>11.8.7</tag>
478 <item>Packages should install any relevant files into the directories
479   <file>/usr/include/X11/</file> and <file>/usr/lib/X11/</file>, but if
480   they do so, they must pre-depend on <tt>x11-common (&gt;= 1:7.0.0)</tt>
481 </taglist></p>
482
483 <sect> Version 3.7.0.0
484 <p>
485
486 Released  Apr 2006.
487
488 </p><p><taglist>
489 <tag>11.5</tag>
490 <item>Packages shipping web server CGI files are expected to install
491   them in <file>/usr/lib/cgi-lib/</file> directories.  This location change
492   perhaps should be documented in NEWS                     
493 <tag>11.5</tag>
494 <item>Web server packages should include a standard scriptAlias of
495   cgi-lib to <file>/usr/lib/cgi-lib</file>.
496 <tag>9.1.1</tag>
497 <item>The version of FHS mandated by policy has been upped to
498   2.3. There should be no changes required for most packages,
499   though new top level directories <file>/media</file>, <file>/srv</file>,
500   etc.  may be of interest.
501 <tag>5.1, 5.6.3</tag>
502 <item>All fields, apart from the Uploaders field, in the control file
503   are supposed to be a single logical line, which may be spread
504   over multiple physical  lines (newline followed by space is
505   elided).  However, any parser for the control file must allow
506   the Uploaders field to be spread over multiple physical lines
507   as well, to prepare for future changes.
508 <tag>10.4</tag>
509 <item>When scripts are installed into a directory in the system
510   PATH, the script name should not include an extension that
511   denotes the scripting language currently used to implement it.
512
513 <tag>9.3.3.2</tag>
514 <item>packages that invoke initscripts now must use invoke-rc.d to do
515   so since it also pays attention to run levels and other local
516   constraints.
517 <tag>11.8.5.2, 11.8.7, etc</tag>
518 <item>We no longer use <file>/usr/X11R6</file>, since we have
519   migrated away to using Xorg paths. This means, for one thing, fonts
520   live in <file>/usr/share/fonts/X11/</file> now, and <file>/usr/X11R6</file>
521   is gone.
522 </taglist></p>
523
524 <sect> Version 3.6.2.0
525 <p>
526
527 Released  2005
528
529 </p><p><taglist>
530 <tag></tag>
531 <item>Recommend. doc-base, and not menu, for registering package documentation.
532 </item>
533 <tag>8.1</tag>
534 <item>Run time support programs should live in subdirectories of
535   <file>/usr/lib/</file> or <file>/usr/share</file>, and preferably the shared
536   lib is named the same as the package name (to avoid name collisions).
537 </item>
538 <tag>11.5</tag>
539 <item>It is recommended that HTTP servers provide an alias /images to
540   allow packages to share image files with the web server
541 </item>
542 </taglist></p>
543
544 <sect> Version 3.6.1.0
545 <p>
546
547 Released  Aug 2003.
548
549 </p><p><taglist>
550 <tag>3.10.1</tag>
551 <item>Prompting the user should be done using debconf. Non debconf
552   user prompts are now deprecated.
553 </taglist></p>
554
555 <sect> Version 3.6.0
556 <p>
557
558 Released  Jul 2003.
559
560 </p><p><taglist>
561 <tag></tag>
562 <item>Restructuring causing shifts in section numbers and bumping of
563   the minor version number:
564 <tag></tag>
565 <item>Many packaging manual appendices that were integrated into policy
566   sections are now empty, and replaced with links to the Policy.
567   In particular, the appendices that included the list of control
568   fields were updated (new fields like Closes, Changed-By were added)
569   and the list of fields for each of control, .changes and .dsc files
570   is now in Policy, and they're marked mandatory, recommended or
571   optional based on the current practice and the behavior of the
572   deb-building tool-chain.
573 <tag></tag>
574 <item>Elimination of needlessly deep section levels, primarily in the
575   chapter Debian Archive, from which two new chapters were split out,
576   Binary packages and Source packages. What remained was reordered
577   properly, that is, some sects became sects etc.
578 <tag></tag>
579 <item>Several sections that were redundant, crufty or simply not designed
580   with any sort of vision, were rearranged according to the formula that
581   everything should be either in the same place or properly interlinked.
582   Some things remained split up between different chapters when they
583   talked about different aspects of files: their content, their syntax,
584   and their placement in the file system. In particular, see the new
585   sections about changelog files.
586 <tag>menu policy</tag>
587 <item>Added Games/Simulation and Apps/Education to menu
588   sub-policy
589 <tag>C.2.2</tag>
590 <item>Debian changelogs should be UTF-8 encoded.
591 <tag>10.2</tag>
592 <item>shared libraries must be linked against all libraries that they
593   use symbols from in the same way that binaries are.
594 <tag>7.6</tag>
595 <item>build-depends-indep need not be satisfied during clean
596   target.
597 </taglist></p>
598
599 <sect> Version 3.5.10
600 <p>
601
602 Released  May 2003.
603
604 </p><p><taglist>
605 <tag>11.8.3</tag>
606 <item>packages providing the x-terminal-emulator virtual package
607   ought to ensure that they interpret the command line exactly
608   like xterm does.
609 <tag>11.8.4</tag>
610 <item>Window managers compliant with the Window Manager Specification
611   Project may add 40 points for ranking in the alternatives
612 </taglist></p>
613
614 <sect> Version 3.5.9.0
615 <p>
616
617 Released  Mar 2003.
618
619 </p><p><taglist>
620 <tag>3.4.2</tag>
621 <item>The section describing the Description: package field once again has
622   full details of the long description format.
623 <tag>4.2</tag>
624 <item>Clarified that if a package has non-build-essential
625   build-dependencies, it should have them listed in the Build-Depends
626   and related fields (i.e. it's not merely optional).
627 <tag>9.3.2</tag>
628 <item>When asked to restart a service that isn't already running,
629   the init script should start the service.
630 <tag>12.6</tag>
631 <item>If the purpose of a package is to provide examples, then the
632   example files can be installed into <file>/usr/share/doc/package</file>
633   (rather than <file>/usr/share/doc/package/examples</file>).
634 </taglist></p>
635
636 <sect> Version 3.5.8.0
637 <p>
638
639 Released  Nov 2002.
640
641 </p><p><taglist>
642 <tag>12.7</tag>
643 <item>It is no longer necessary to keep a log of changes to the upstream
644   sources in the copyright file. Instead, all such changes should be
645   documented in the changelog file.
646 <tag>7.6</tag>
647 <item><var/Build-Depends/, <var/Build-Conflicts/, <var/Build-Depends-Indep/,
648   and <var/Build-Conflicts-Indep/ must also be satisfied when the clean
649   target is called.
650 <tag>menu policy</tag>
651 <item>A new Apps/Science menu section is available
652 <tag>debconf policy</tag>
653 <item>debconf specification cleared up, various changes.
654 <tag>12.1</tag>
655 <item>It is no longer recommended to create symlinks from nonexistent
656   manual pages to undocumented(7). Missing manual pages for programs
657   are still a bug.
658 </taglist></p>
659
660 <sect> Version 3.5.7.0
661 <p>
662
663 Released  Aug 2002.
664
665 </p><p><taglist>
666 <tag></tag>
667 <item>Packages no longer have to ask permission to call MAKEDEV in
668   postinst, merely notifying the user ought to be enough.
669 <tag>2.2.4</tag>
670 <item>cryptographic software may now be included in the main
671   archive.
672 <tag>3.9</tag>
673 <item>task packages are no longer permitted; tasks are now created by a
674   special Tasks: field in the control file.
675 <tag>11.8.4</tag>
676 <item>window managers that support netwm can now add 20 points when
677   they add themselves as an alternative for
678  <file>/usr/bin/x-window-manager</file>
679 <tag>10.1</tag>
680 <item>The default compilation options have now changed, one should
681   provide debugging symbols in all cases, and optionally step
682   back optimization to -O0, depending on the DEB_BUILD_OPTIONS
683   environment variable.
684 <tag>7.6, 4.8</tag>
685 <item>Added mention of build-arch, build-indep, etc, in describing
686   the relationships with `Build-Depends', `Build-Conflicts',
687   `Build-Depends-Indep', and `Build-Conflicts-Indep'. May need to
688   review the new rules.
689 <tag>8</tag>
690 <item>Changed rules on how, and when, to invoke ldconfig in maintainer
691   scripts. Long rationale.
692 </taglist></p>
693
694 <p><em>
695 Added the last note in 3.5.6 upgrading checklist item regarding build
696 rules, please see below
697 </em></p>
698
699 <sect> Version 3.5.6.0
700 <p>
701
702 Released  Jul 2001.
703
704 </p><p><taglist>
705 <tag>2.5</tag>
706 <item>Emacs and TeX are no longer mandated by policy to be priority
707   standard packages
708 <tag>11.5</tag>
709 <item>Programs that access docs need to do so via <file>/usr/share/doc</file>,
710   and not via <file>/usr/doc/</file> as was the policy previously
711 <tag>12.3</tag>
712 <item>Putting documentation in <file>/usr/doc</file> versus
713  <file>/usr/share/doc</file> is now a ``serious'' policy violation.
714 <tag>11.5</tag>
715 <item>For web servers, one should not provide non-local access to the
716   <file>/usr/share/doc</file> hierarchy. If one can't provide access
717   controls for the http://localhost/doc/ directory, then it is preferred
718   that one ask permission to expose that information during the install.
719 <tag>7</tag>
720 <item>There are new rules for build-indep/build-arch targets and
721   there is a new Build-Depend-Indep semantic.
722 </taglist></p>
723
724 <sect> Version 3.5.5.0
725 <p>
726
727 Released  May 2001.
728
729 </p><p><taglist>
730 <tag>12.1</tag>
731 <item>Manpages should not rely on header information to have
732   alternative manpage names available; it should only use
733   symlinks or .so pages to do this
734 </item>
735 <tag></tag>
736 <item><em> Clarified note in 3.5.3.0 upgrading checklist regarding
737    examples and templates: this refers only to those examples used
738    by scripts; see section 10.7.3 for the whole story</em>
739 </item>
740 <tag></tag>
741 <item>Included a new section 10.9.1 describing the use of
742   dpkg-statoverride; this does not have the weight of policy
743 </item>
744 <tag></tag>
745 <item>Clarify Standards-Version: you don't need to rebuild your
746   packages just to change the Standards-Version!
747 </item>
748 <tag>10.2</tag>
749 <item>Plugins are no longer bound by all the rules of shared
750   libraries
751 </item>
752 <tag>X Windows related things:</tag>
753 <item><taglist>
754   <tag>11.8.1</tag>
755   <item>Clarification of priority levels of X Window System related
756       packages
757   </item>
758   <tag>11.8.3</tag>
759   <item>Rules for defining x-terminal-emulator improved </item>
760   <tag>11.8.5</tag>
761   <item>X Font policy rewritten: you must read this if you provide
762       fonts for the X Window System
763   </item>
764   <tag>11.8.6</tag>
765   <item>Packages must not ship <file>/usr/X11R6/lib/X11/app-defaults/</file>
766   </item>
767   <tag>11.8.7</tag>
768   <item>X-related packages should usually use the regular FHS
769       locations; imake-using packages are exempted from this
770   </item>
771   <tag>11.8.8</tag>
772   <item>OpenMotif linked binaries have the same rules as
773       OSF/Motif-linked ones
774   </item>
775   </taglist></item>
776 </taglist></p>
777
778 <sect> Version 3.5.4.0
779 <p> Released  Apr 2001.
780
781 </p><p><taglist>
782 <tag>11.6</tag>
783 <item>The system-wide mail directory is now /var/mail, no longer
784   /var/spool/mail.  Any packages accessing the mail spool should
785   access it via /var/mail and include a suitable Depends field;
786   details in
787 </item>
788 <tag>11.9; perl-policy</tag>
789 <item>The perl policy is now part of Debian policy
790   proper. Perl programs and modules should follow the current Perl
791   policy
792 </item>
793 </taglist></p>
794
795 <sect> Version 3.5.3.0
796 <p> Released Apr 2001
797
798 </p><p><taglist>
799 <tag>7.1</tag>
800 <item>Build-Depends arch syntax has been changed to be less
801   ambiguous. This should not affect any current packages
802 </item>
803 <tag>10.7.3</tag>
804 <item>Examples and templates files for use by scripts should now live
805   in <file>/usr/share/&lt;package&gt;</file> or
806   <file>/usr/lib/&lt;package&gt;</file>, with symbolic links from
807   <file>/usr/share/doc/&lt;package&gt;/examples</file> as needed
808 </item>
809 </taglist></p>
810
811 <sect> Version 3.5.2.0
812
813 <p> Released Feb 2001.
814
815 </p><p><taglist>
816 <tag>11.8.6</tag>
817 <item>X app-defaults directory has moved from
818   <file>/usr/X11R6/lib/X11/app-defaults</file> to
819   <file>/etc/X11/app-defaults</file>
820 </item>
821 </taglist></p>
822
823 <sect> Version 3.5.1.0
824
825 <p> Released Feb 2001.
826
827 </p><p><taglist>
828 <tag>8.1</tag>
829 <item>dpkg-shlibdeps now uses objdump, so shared libraries have to be
830   run through dpkg-shlibdeps as well as executables
831 </item>
832 </taglist></p>
833
834 <sect> Version 3.5.0.0
835
836 <p> Released Jan 2001.
837
838 </p><p><taglist>
839 <tag>11.8.5</tag>
840 <item>Font packages for the X Window System must now declare a
841   dependency on xutils (>= 4.0.2)
842 </item>
843 </taglist></p>
844
845 <sect> Version 3.2.1.1
846
847 <p> Released Jan 2001.
848
849 </p><p><taglist>
850 <tag>9.3.2</tag>
851 <item>Daemon startup scripts in <file>/etc/init.d/</file> should not contain
852   modifiable parameters; these should be moved to a file in
853   <file>/etc/default/</file>
854 </item>
855 <tag>12.3</tag>
856 <item>Files in <file>/usr/share/doc</file> must not be referenced by any
857   program.  If such files are needed, they must be placed in
858   <file>/usr/share/&lt;package&gt;/</file>, and symbolic links
859   created as required in <file>/usr/share/doc/&lt;package&gt;/</file>
860 </item>
861 <tag></tag>
862 <item>Much of the packaging manual has now been imported into the
863   policy document
864 </item>
865 </taglist></p>
866
867 <sect> Version 3.2.1.0
868
869 <p> Released Aug 00.
870
871 </p><p><taglist>
872 <tag>11.8.1</tag>
873 <item>A package of priority standard or higher may provide two
874   binaries, one compiled with support for the X Window System,
875   and the other without
876 </item>
877 </taglist></p>
878
879 <sect> Version 3.2.0.0
880
881 <p> Released Aug 00.
882
883 </p><p><taglist>
884 <tag>10.1</tag>
885 <item>By default executables should not be built with the debugging
886   option -g. Instead, it is recommended to support building the
887   package with debugging information optionally.  Details in
888 </item>
889 <tag>12.8</tag>
890 <item>Policy for packages where the upstream uses HTML changelog
891   files has been expanded.  In short, a plain text changelog file
892   should always be generated for the upstream changes
893 </item>
894 <tag></tag>
895 <item>Please note that the new release of the X window system (3.2)
896   shall probably need sweeping changes in policy
897 </item>
898 <tag></tag>
899 <item>Policy for packages providing the following X-based features
900   has been codified:
901   <taglist>
902   <tag>11.8.2</tag>
903   <item>X server (virtual package xserver) </item>
904   <tag>11.8.3</tag>
905   <item>X terminal emulator (virtual package x-terminal-emulator) </item>
906   <tag>11.8.4</tag>
907   <item>X window manager (virtual package x-window-manager, and
908       <file>/usr/bin/x-window-manager</file> alternative, with priority
909       calculation guidelines)
910   </item>
911   <tag>12.8.5</tag>
912   <item>X fonts (this section has been written from scratch) </item>
913   <tag>11.8.6</tag>
914   <item>X application defaults </item>
915   </taglist>
916 </item>
917 <tag>11.8.7</tag>
918 <item>Policy for packages using the X Window System and FHS issues
919   has been clarified;
920 </item>
921 <tag>11.7.3</tag>
922 <item>No package may contain or make hard links to conffiles </item>
923 <tag>8</tag>
924 <item>Noted that newer dpkg versions do not require extreme care in
925   always creating the shared lib before the symlink, so the unpack
926   order be correct
927 </item>
928 </taglist></p>
929
930 <sect> Version 3.1.1.0
931
932 <p> Released Nov 1999.
933
934 </p><p><taglist>
935 <tag>7.1</tag>
936 <item>Correction to semantics of architecture lists in Build-Depends
937   etc.  Should not affect many packages
938 </item>
939 </taglist></p>
940
941 <sect> Version 3.1.0.0
942
943 <p> Released Oct 1999.
944
945 </p><p><taglist>
946 <tag>defunct</tag>
947 <item><file>/usr/doc/&lt;package&gt;</file> has to be a symlink pointing to
948   <file>/usr/share/doc/&lt;package&gt;</file>, to be maintained by postinst
949   and prerm scripts.
950 </item>
951 <tag>7.1, 7.6</tag>
952 <item>Introduced source dependencies (Build-Depends, etc.) </item>
953 <tag>9.3.4</tag>
954 <item><file>/etc/rc.boot</file> has been deprecated in favour of
955   <file>/etc/rcS.d</file>.  (Packages should not be touching this directory,
956   but should use update-rc.d instead)
957 </item>
958 <tag>9.3.3</tag>
959 <item>update-rc.d is now the <em>only</em> allowable way of accessing the
960   <file>/etc/rc?.d/[SK]??*</file> links.  Any scripts which manipulate them
961   directly must be changed to use update-rc.d instead.  (This is
962   because the file-rc package handles this information in an
963   incompatible way.)
964 </item>
965 <tag>12.7</tag>
966 <item>Architecture-specific examples go in
967   <file>/usr/lib/&lt;package&gt;/examples</file>
968   with symlinks from <file>/usr/share/doc/&lt;package&gt;/examples/*</file>
969   or from <file>/usr/share/doc/&lt;package&gt;/examples</file> itself
970 </item>
971 <tag>9.1.1</tag>
972 <item>Updated FHS to a 2.1 draft; this reverts <file>/var/state</file> to
973   <file>/var/lib</file>
974 </item>
975 <tag>9.7; mime-policy</tag>
976 <item>Added MIME sub-policy document </item>
977 <tag>12.4</tag>
978 <item>VISUAL is allowed as a (higher priority) alternative to EDITOR
979 </item>
980 <tag>11.6</tag>
981 <item>Modified liblockfile description, which affects
982   mailbox-accessing programs.  Please see the policy document for
983   details
984 </item>
985 <tag>12.7</tag>
986 <item>If a package provides a changelog in HTML format, a text-only
987   version should also be included.  (Such a version may be prepared
988   using <prgn>lynx -dump -nolist</prgn>.)
989 </item>
990 <tag>3.2.1</tag>
991 <item>Description of how to handle version numbers based on dates
992   added
993 </item>
994 </taglist></p>
995
996 <sect> Version 3.0.1.0
997
998 <p> Released Jul 1999.
999
1000 </p><p><taglist>
1001 <tag>10.2</tag>
1002 <item>Added the clarification that the .la files are essential for
1003   the packages using libtool's libltdl library, in which case the .la
1004   files must go in the run-time library package
1005 </item>
1006 </taglist></p>
1007
1008 <sect> Version 3.0.0.0
1009
1010 <p> Released Jun 1999.
1011
1012 </p><p><taglist>
1013 <tag>9.1</tag>
1014 <item>Debian formally moves from the FSSTND to the FHS. This is a
1015   major change, and the implications of this move are probably
1016   not all known.
1017 </item>
1018 <tag>4.1</tag>
1019 <item>Only 3 digits of the Standards version need be included in
1020   control files, though all four digits are still permitted.
1021 </item>
1022 <tag>12.6</tag>
1023 <item>The location of the GPL has changed to
1024   <file>/usr/share/common-licenses</file>. This may require changing the
1025   copyright files to point to the correct location of the GPL and
1026   other major licenses
1027 </item>
1028 <tag>10.2</tag>
1029 <item>Packages that use libtool to create shared libraries must
1030   include the .la files in the -dev packages
1031 </item>
1032 <tag>10.8</tag>
1033 <item>Use logrotate to rotate log files
1034 </item>
1035 <tag>now 11.8</tag>
1036 <item>section 5.8 has been rewritten (Programs for the X Window
1037   System)
1038 </item>
1039 <tag>9.6; menu-policy</tag>
1040 <item>There is now an associated menu policy, in a separate document,
1041   that carries the full weight of Debian policy
1042 </item>
1043 <tag>11.3</tag>
1044 <item>Programs which need to modify the files <file>/var/run/utmp</file>,
1045   <file>/var/log/wtmp</file> and <file>/var/log/lastlog</file> must be
1046   installed setgid utmp
1047 </item>
1048 </taglist></p>
1049 <p><em>
1050    Please note that section numbers below this point may not be up to date
1051 </em></p>
1052
1053 <sect> Version 2.5.0.0
1054
1055 <p> Released Oct 1998.
1056
1057 Policy Manual:
1058 </p><p><list>
1059 <item>Rearranged the manual to create a new Section 4, Files
1060   <list>
1061   <item>Section 3.3 ("Files") was moved to Section 4. The Sections
1062     that  were Section 4 and Section 5 were  moved down to become
1063     Section 5 and Section 6.
1064   </item>
1065   <item>What was Section 5.5 ("Log files") is now a subsection of the
1066     new Section 4 ("Files"), becoming section 4.8, placed after
1067     "Configuration files", moving the Section 4.8 ("Permissions
1068     and owners") to Section 4.9.  All subsections of the old
1069     Section 5 after 5.5  were moved down to fill in the number
1070     gap.
1071   </item>
1072   </list></item>
1073 <item>Modified the section about changelog files to accommodate
1074   upstream changelogs which were formatted as HTML. These
1075   upstream changelog files should now be accessible as
1076   <file>/usr/doc/package/changelog.html.gz</file>
1077 </item>
1078 <item>Symlinks are permissible to link the real, or upstream,
1079     changelog name to the Debian mandated name.
1080 </item>
1081 <item>Clarified that HTML documentation should be present in some
1082   package, though not necessarily the main binary package.
1083   </item>
1084 <item>Corrected all references to the location of the copyright
1085   files. The correct location is <file>/usr/doc/package/copyright</file>
1086   </item>
1087 <item>Ratified the architecture specification strings to cater to the
1088   HURD.
1089   </item>
1090 </list></p>
1091
1092 <sect> Version 2.4.1.0
1093
1094 <p> Released Apr 1998.
1095 </p>
1096 <sect1> Policy Manual:
1097 <p><taglist>
1098 <tag>Updated section 3.3.5 Symbolic links:</tag>
1099   <item>symbolic links within a toplevel directory should be relative,
1100     symbolic links between toplevel directories should be absolute
1101     (cf., Policy Weekly Issue#6, topic 2)
1102   </item>
1103
1104 <tag>Updated section 4.9 Games:</tag>
1105   <item>manpages for games should be installed in <file>/usr/man/man6</file>
1106     (cf., Policy Weekly Issue#6, topic 3)
1107   </item>
1108 </taglist></p>
1109
1110 <sect1> Packaging Manual:
1111 <p><list>
1112 <item>Updated prefix of chapter 12, Shared Libraries:
1113   ldconfig must be called in the postinst script if the package
1114   installs shared libraries
1115   (cf., Policy Weekly Issue #6, fixes:bug#20515)
1116 </item>
1117 </list></p>
1118
1119 <sect> Version 2.4.0.0
1120
1121 <p> Released Jan 1998
1122
1123 </p><p><taglist>
1124 <tag>Updated section 3.3.4 Scripts:</tag>
1125   <item><list>
1126   <item>/bin/sh may be any POSIX compatible shell
1127   <item>scripts including bashisms have to specify <file>/bin/bash</file>
1128     as interpreter
1129   <item>scripts which create files in world-writable directories
1130     (e.g., in <file>/tmp</file>) should use tempfile or mktemp for creating
1131     the directory
1132   </list></item>
1133
1134 <tag>Updated section 3.3.5 Symbolic Links:</tag>
1135   <item>symbolic links referencing compressed files must have the same
1136     file extension as the referenced file
1137   </item>
1138
1139 <tag>Updated section 3.3.6 Device files:</tag>
1140   <item><file>/dev/tty*</file> serial devices should be used instead of
1141   <file>/dev/cu*</file>
1142   </item>
1143
1144 <tag>Updated section 3.4.2 Writing the scripts in <file>/etc/init.d</file>:
1145   <item><list>
1146   <item>all <file>/etc/init.d</file> scripts have to provide the following
1147   options: start, stop, restart, force-reload
1148   <item>the reload option is optional and must never stop and restart
1149     the service
1150   </list></item>
1151
1152 <tag>Updated section 3.5 Cron jobs:
1153   <item>cron jobs that need to be executed more often than daily should
1154     be installed into <file>/etc/cron.d</file>
1155   </item>
1156
1157 <tag>Updated section 3.7 Menus:
1158   <item>removed section about how to register HTML docs to `menu'
1159     (the corresponding section in 4.4, Web servers and applications,
1160     has been removed in policy 2.2.0.0 already, so this one was
1161     obsolete)
1162   </item>
1163
1164 <tag>New section 3.8 Keyboard configuration:
1165   <item>details about how the backspace and delete keys should be
1166     handled
1167   </item>
1168
1169 <tag>New section 3.9 Environment variables:
1170   <item>no program must depend on environment variables to get a
1171     reasonable default configuration
1172   </item>
1173
1174 <tag>New section 4.6 News system configuration:
1175   <item><file>/etc/news/organization</file> and <file>/etc/news/server</file>
1176     should be supported by all news servers and clients
1177   </item>
1178
1179 <tag>Updated section 4.7 Programs for the X Window System:
1180   <item><list>
1181   <item>programs requiring a non-free Motif library should be provided
1182     as foo-smotif and foo-dmotif package
1183   </item>
1184   <item>if lesstif works reliably for such program, it should be linked
1185     against lesstif and not against a non-free Motif library
1186   </item>
1187   </list></item>
1188
1189 <tag>Updated section 4.9 Games:
1190   <item>games for X Windows have to be installed in <file>/usr/games</file>,
1191   just as non-X games
1192   </item>
1193 </taglist></p>
1194
1195 <sect> Version 2.3.0.1, 2.3.0.0
1196
1197 <p> Released Sep 1997.
1198
1199 <p><list>
1200 <item>new section `4.2 Daemons' including rules for
1201   <file>/etc/services</file>, <file>/etc/protocols</file>,
1202   <file>/etc/rpc</file>, and <file>/etc/inetd.conf</file>
1203 </item>
1204
1205 <item>updated section about `Configuration files':
1206   packages may not touch other packages' configuration files
1207 </item>
1208
1209 <item>MUAs and MTAs have to use liblockfile</item>
1210 </list></p>
1211
1212 <sect> Version 2.2.0.0
1213
1214 <p> Released July 1997.
1215
1216 <p><list>
1217 <item>added section 4.1 `Architecture specification strings':
1218   use
1219        &lt;arch&gt;-linux
1220   where &lt;arch&gt; is one of the following:
1221        i386, alpha, arm, m68k, powerpc, sparc.
1222 </item>
1223
1224 <item>detailed rules for <file>/usr/local</file></item>
1225
1226 <item>user ID's</item>
1227
1228 <item>editor/pager policy</item>
1229
1230 <item>cron jobs</item>
1231
1232 <item>device files</item>
1233
1234 <item>don't install shared libraries as executable</item>
1235
1236 <item>app-defaults files may not be conffiles</item>
1237 </list></p>
1238
1239 <sect> Version 2.1.3.2, 2.1.3.1, 2.1.3.0
1240
1241 <p> Released Mar 1997.
1242
1243 <p><list>
1244 <item>two programs with different functionality must not have the
1245   same name </item>
1246
1247 <item>"Webstandard 3.0"</item>
1248
1249 <item>"Standard for Console Messages"</item>
1250
1251 <item>Libraries should be compiled with `-D_REENTRANT'</item>
1252
1253 <item>Libraries should be stripped with <prgn>strip --strip-unneeded</prgn>
1254 </item>
1255 </list></p>
1256
1257 <sect> Version 2.1.2.2, 2.1.2.1, 2.1.2.0
1258
1259 <p> Released Nov 1996.
1260
1261 <p><list>
1262 <item>Some changes WRT shared libraries
1263 </list></p>
1264
1265 <sect> Version 2.1.1.0
1266
1267 <p> Released Sep 1996.
1268
1269 <p><list>
1270 <item>No hard links in source packages</item>
1271
1272 <item>Do not use <prgn>dpkg-divert</prgn> or <prgn>update-alternatives</prgn>
1273 without consultation </item>
1274
1275 <item>Shared libraries must be installed stripped </item>
1276 </list></p>
1277
1278 <sect> Version 2.1.0.0
1279
1280 <p> Released Aug 1996.
1281
1282 <p><list>
1283   <item>Upstream changelog must be installed too </item>
1284 </list></p>
1285 </book>
1286 </debiandoc>