- <heading>Perl programs and modules</heading>
-
- <p>
- Perl programs and modules should follow the current Perl policy.
- </p>
-
- <p>
- The Perl policy can be found in the <tt>perl-policy</tt>
- files in the <tt>debian-policy</tt> package.
- They are also available from the Debian web mirrors at
- <tt><url name="/doc/packaging-manuals/perl-policy/"
- id="http://www.debian.org/doc/packaging-manuals/perl-policy/"></tt>
- and from the Debian archive mirrors at
- <tt><url name="/doc/package-developer/perl-policy.txt.gz"
- id="http://ftp.debian.org/debian/doc/package-developer/perl-policy.txt.gz"></tt>.
- </p>
- </sect>
-
- <sect>
- <heading>Emacs lisp programs</heading>
-
- <p>
- Please refer to the "Debian Emacs Policy" for details of how to
- package emacs lisp programs.
- </p>
-
- <p>
- The Emacs policy is available in
- <file>debian-emacs-policy.gz</file> of the
- <package>emacsen-common</package> package.
- It is also available from the Debian web mirrors at
- <tt><url name="/doc/packaging-manuals/debian-emacs-policy"
- id="http://www.debian.org/doc/packaging-manuals/debian-emacs-policy"></tt>.
- </p>
- </sect>
-
- <sect>
- <heading>Games</heading>
-
- <p>
- The permissions on <file>/var/games</file> are mode 755, owner
- <tt>root</tt> and group <tt>root</tt>.
- </p>
-
- <p>
- Each game decides on its own security policy.</p>
-
- <p>
- Games which require protected, privileged access to
- high-score files, savegames, etc., may be made
- set-<em>group</em>-id (mode 2755) and owned by
- <tt>root.games</tt>, and use files and directories with
- appropriate permissions (770 <tt>root.games</tt>, for
- example). They must not be made
- set-<em>user</em>-id, as this causes security problems. (If
- an attacker can subvert any set-user-id game they can
- overwrite the executable of any other, causing other players
- of these games to run a Trojan horse program. With a
- set-group-id game the attacker only gets access to less
- important game data, and if they can get at the other
- players' accounts at all it will take considerably more
- effort.)</p>
-
- <p>
- Some packages, for example some fortune cookie programs, are
- configured by the upstream authors to install with their
- data files or other static information made unreadable so
- that they can only be accessed through set-id programs
- provided. You should not do this in a Debian package: anyone can
- download the <file>.deb</file> file and read the data from it,
- so there is no point making the files unreadable. Not
- making the files unreadable also means that you don't have
- to make so many programs set-id, which reduces the risk of a
- security hole.</p>
-
- <p>
- As described in the FHS, binaries of games should be
- installed in the directory <file>/usr/games</file>. This also
- applies to games that use the X Window System. Manual pages
- for games (X and non-X games) should be installed in
- <file>/usr/share/man/man6</file>.</p>
- </sect>
- </chapt>
-
- <chapt id="docs"><heading>Documentation</heading>
-
-
- <sect>
- <heading>Manual pages</heading>
-
- <p>
- You should install manual pages in <prgn>nroff</prgn> source
- form, in appropriate places under <file>/usr/share/man</file>.
- You should only use sections 1 to 9 (see the FHS for more
- details). You must not install a preformatted "cat page".
- </p>
-
- <p>
- Each program, utility, and function should have an
- associated manual page included in the same package. It is
- suggested that all configuration files also have a manual
- page included as well. Manual pages for protocols and other
- auxiliary things are optional.
- </p>
-
- <p>
- If no manual page is available, this is considered as a bug
- and should be reported to the Debian Bug Tracking System (the
- maintainer of the package is allowed to write this bug report
- themselves, if they so desire). Do not close the bug report
- until a proper manpage is available.<footnote>
- <p>
- It is not very hard to write a man page. See the
- <url id="http://www.schweikhardt.net/man_page_howto.html"
- name="Man-Page-HOWTO">,
- <manref name="man" section="7">, the examples
- created by <prgn>debmake</prgn> or <prgn>dh_make</prgn>,
- the helper programs <prgn>help2man</prgn>, or the
- directory <file>/usr/share/doc/man-db/examples</file>.
- </p>
- </footnote>
- </p>
-
- <p>
- You may forward a complaint about a missing manpage to the
- upstream authors, and mark the bug as forwarded in the
- Debian bug tracking system. Even though the GNU Project do
- not in general consider the lack of a manpage to be a bug,
- we do; if they tell you that they don't consider it a bug
- you should leave the bug in our bug tracking system open
- anyway.
- </p>
-
- <p>
- Manual pages should be installed compressed using <tt>gzip -9</tt>.
- </p>
-
- <p>
- If one manpage needs to be accessible via several names it
- is better to use a symbolic link than the <file>.so</file>
- feature, but there is no need to fiddle with the relevant
- parts of the upstream source to change from <file>.so</file> to
- symlinks: don't do it unless it's easy. You should not
- create hard links in the manual page directories, nor put
- absolute filenames in <file>.so</file> directives. The filename
- in a <file>.so</file> in a manpage should be relative to the
- base of the manpage tree (usually
- <file>/usr/share/man</file>). If you do not create any links
- (whether symlinks, hard links, or <tt>.so</tt> directives)
- in the filesystem to the alternate names of the manpage,
- then you should not rely on <prgn>man</prgn> finding your
- manpage under those names based solely on the information in
- the manpage's header.<footnote>
- <p>
- Supporting this in <prgn>man</prgn> often requires
- unreasonable processing time to find a manual page or to
- report that none exists, and moves knowledge into man's
- database that would be better left in the filesystem.
- This support is therefore deprecated and will cease to
- be present in the future.
- </p>
- </footnote>
- </p>
- </sect>
-
- <sect>
- <heading>Info documents</heading>
-
- <p>
- Info documents should be installed in <file>/usr/share/info</file>.
- They should be compressed with <tt>gzip -9</tt>.
- </p>
-
- <p>
- Your package should call <prgn>install-info</prgn> to update
- the Info <file>dir</file> file in its <prgn>postinst</prgn>
- script when called with a <tt>configure</tt> argument, for
- example:
- <example compact="compact">
-install-info --quiet --section Development Development \
- /usr/share/info/foobar.info
- </example></p>
-