1 <!doctype debiandoc system>
6 <title>Debian Perl Policy</title>
8 <name>Raphaël Hertzog</name>
11 <name>Brendan O'Dea</name>
14 <name>The Debian Policy mailing list</name>
15 <email>debian-policy@lists.debian.org</email>
17 <version>version 1.20</version>
20 This document describes the packaging of Perl within the Debian
21 GNU/Linux distribution and the policy requirements for packaged
22 Perl programs and modules.
27 Copyright © 1999, 2001 Software in the Public Interest
30 This manual is free software; you can redistribute it and/or
31 modify it under the terms of the GNU General Public License
32 as published by the Free Software Foundation; either version
33 2 of the License, or (at your option) any later version.
36 This is distributed in the hope that it will be useful, but
37 WITHOUT ANY WARRANTY; without even the implied warranty of
38 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
39 the GNU General Public License for more details.
42 A copy of the GNU General Public License is available as
43 <tt>/usr/share/common-licenses/GPL</tt> in the Debian GNU/Linux
44 distribution or on the World Wide Web at
45 <url id="http://www.gnu.org/copyleft/gpl.html"
46 name="The GNU Public Licence">.
49 You can also obtain it by writing to the
50 Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
51 Boston, MA 02110-1301, USA.
59 <heading>About this document</heading>
61 This document is distributed as the <tt>perl-policy</tt> files
63 <package><url name="debian-policy" id="http://packages.debian.org/debian-policy"></package>.
64 It is also available from the Debian web mirrors at
65 <tt><url name="/doc/packaging-manuals/perl-policy/"
66 id="http://www.debian.org/doc/packaging-manuals/perl-policy/"></tt>.
71 <heading>Perl Packaging</heading>
73 <heading>Versions</heading>
75 At any given time, the package <package>perl</package> should
76 represent the current stable upstream version of Perl revision
77 5 (see <ref id="perl6">).
80 Only one package may contain the <file>/usr/bin/perl</file>
81 binary and that package must either be <package>perl</package>
82 or a dependency of that package (see <ref id="base">).
85 Where possible, Perl should be compiled to provide binary
86 compatibility to at least the last released package version to
87 allow a grace period over which binary module packages may be
88 re-built against the new package (see <ref id="binary_modules">).
91 The <package>perl-base</package> package must provide
92 <package>perlapi-<var>abiname</var></package> for all released
93 package versions it is compatible with. The choice of
94 <var>abiname</var> is arbitrary, but if it differs from
95 <tt>$Config{version}</tt>, it must be specified in
96 <tt>$Config{debian_abi}</tt>.
101 <heading>Base Package</heading>
103 In order to provide a minimal installation of Perl for use by
104 applications without requiring the whole of Perl to be
105 installed, the <package>perl-base</package> package contains
106 the binary and a basic set of modules.
109 As Perl has been part of the essential set for some time and is
110 used without dependencies by such things as package maintainer
111 scripts, <package>perl-base</package> must be
112 priority <em>required</em> and marked as <em>essential</em>.
115 Note that the <package>perl-base</package> package is intended
116 only to provide for exceptional circumstances and the contents
117 may change. In general, only packages which form part of the
118 base system should use only the facilities
119 of <package>perl-base</package> rather than declaring a
120 dependency on <package>perl</package>.
125 <heading>Module Path</heading>
127 Perl searches three different locations for modules, referred
128 to in this document as <var>core</var> in which modules
129 distributed with Perl are installed, <var>vendor</var> for
130 packaged modules and <var>site</var> for modules installed by
131 the local administrator.
134 The module search path (<tt>@INC</tt>) in the Debian packages
135 has been ordered to include these locations in the following
138 <tag><var>site</var> (current)</tag>
141 Modules installed by the local administrator for the
142 current version of Perl (see <ref id="site">).
144 /usr/local/lib/perl/<var>version</var>
145 /usr/local/share/perl/<var>version</var>
147 Where <var>version</var> indicates the current Perl
148 version (<tt>$Config{version}</tt><footnote>see the
149 <tt>Config</tt> module</footnote>).
152 <tag><var>vendor</var></tag>
155 Packaged modules (see <ref id="module_packages">).
162 <tag><var>core</var></tag>
165 Modules included in the core Perl distribution.
167 /usr/lib/perl/<var>version</var>
168 /usr/share/perl/<var>version</var>
172 <tag><var>site</var> (old)</tag>
175 <var>site</var> directories (as above) for modules
176 installed with previously released
177 <package>perl</package> packages for which the current
178 package is binary compatible are included if present.
182 In each of the directory pairs above, the <file>lib</file>
183 component is for binary (XS) modules, and <file>share</file>
184 for architecture-independent (pure-perl) modules.
189 <heading>Documentation</heading>
191 The POD files and manual pages which do not refer to programs
192 may be split out into a separate <package>perl-doc</package>
196 Manual pages distributed with Perl packages must be installed
197 into the standard directories:
202 Manual pages for programs and scripts are installed into
203 <file>/usr/share/man/man1</file> with the extension
210 Manual pages for modules are installed into
211 <file>/usr/share/man/man3</file> with the extension
221 <heading>Locally Installed Modules</heading>
222 <sect id="site_dirs">
223 <heading>Site Directories</heading>
225 The Perl packages must provide a mechanism for the local
226 administrator to install modules under <file>/usr/local</file>
227 but must not create or remove those directories.
230 Modules should be installed to the directories described above
231 in <ref id="paths"> as <var>site</var> (current), programs to
232 <file>/usr/local/bin</file> and manual pages under
233 <file>/usr/local/man</file>.
237 <sect id="site_install">
238 <heading>Site Installation</heading>
240 The following commands should be sufficient in the majority of
241 cases for the local administrator to install modules and must
242 create directories as required:
251 <chapt id="module_packages">
252 <heading>Packaged Modules</heading>
253 <sect id="vendor_dirs">
254 <heading>Vendor Directories</heading>
256 The installation directory for Debian modules must be
257 different from that for <var>core</var> and <var>site</var>
261 The current Perl packaging uses the <var>vendor</var>
262 directories for this purpose, which are at present as
263 described in <ref id="paths"> as <var>vendor</var>.
266 No version subdirectory exists on these directories as the
267 dependencies for packaged modules (see <ref id="module_deps">)
268 should ensure that all work with the current
269 <package>perl</package> package.
272 The Perl distribution includes many modules available
273 separately from CPAN<footnote><url
274 id="http://www.perl.com/CPAN"></footnote>, which may have a
275 newer version. The intent of the <tt>@INC</tt> ordering
276 (described in <ref id="paths">) is to allow such modules to be
277 packaged to <var>vendor</var> which take precedence over the
278 version in <var>core</var>. A packaged module which shadows a
279 <var>core</var> module in this way must be a newer version.
282 Module packages must install manual pages into the standard
283 directories (see <ref id="docs">) using the extensions
284 <tt>.1p</tt> and <tt>.3pm</tt> to ensure that no conflict
285 arises where a packaged module duplicates a <var>core</var>
289 <file>.packlist</file> files should not be installed.
293 <sect id="package_names">
294 <heading>Module Package Names</heading>
296 Perl module packages should be named for the primary module
297 provided. The naming convention for module <tt>Foo::Bar</tt>
298 is <package>libfoo-bar-perl</package>. Packages which include
299 multiple modules may additionally include provides for those
300 modules using the same convention.
304 <sect id="vendor_install">
305 <heading>Vendor Installation</heading>
307 A module should use the following lines in the
308 <file>debian/rules</file> <tt>build</tt>
309 target<footnote>The environment variable <tt>PERL_MM_OPT</tt>
310 may be used to pass the <tt>INSTALLDIRS=vendor</tt> option in
311 cases where <file>Makefile.PL</file> is not invoked directly
312 from <file>debian/rules</file></footnote>:
314 perl Makefile.PL INSTALLDIRS=vendor
315 $(MAKE) OPTIMIZE="-O2 -g -Wall"
317 and this one to install the results into the temporary tree:
319 $(MAKE) install DESTDIR=$(CURDIR)/debian/<tmp>
321 <p>Replace <tmp> with the appropriate directory
322 (nominally just tmp)</p>
327 <sect id="module_deps">
328 <heading>Module Dependencies</heading>
329 <sect1 id="indep_modules">
330 <heading>Architecture-Independent Modules</heading>
332 Architecture-independent modules which require
333 <var>core</var> modules from the <package>perl</package>
334 package must specify a dependency on that package.
337 Modules which contain explicit <tt>require
338 <var>version</var></tt> or <tt>use <var>version</var></tt>
339 statements must specify a dependency on
340 <package>perl</package> or <package>perl-base</package> with
341 the minimum required version, or more simply the current
346 <sect1 id="binary_modules">
347 <heading>Binary Modules</heading>
349 Binary modules must specify a dependency on either
350 <package>perl</package> or <package>perl-base</package> with
351 a minimum version of the <package>perl</package> package
352 used to build the module, and must additionally depend on
354 <package>perlapi-$Config{debian_abi}</package> using
355 the <tt>Config</tt> module. If <tt>$Config{debian_abi}</tt>
356 is empty or not set, <tt>$Config{version}</tt> must be used.
361 <heading>Automating Perl Dependencies</heading>
363 Rather than hard-coding the dependencies into the control
364 file, using a substitution such as <tt>${perl:Depends}</tt>
365 is suggested. This allows the dependencies to be determined
366 at build time and written to the <file>substvars</file> file
368 <tt>perl:Depends=<var>deps</var></tt>.<footnote>
369 <p>Please note that dependencies caused by versioned
370 uses and on separately packaged modules are not included
371 in this variable and must be explicitly included.</p>
375 Packages built with <prgn>debhelper</prgn> may use
377 <manref name="dh_perl" section="1"> to generate this
378 substitution automatically. This additionally requires a
379 versioned <tt>Build-Depends</tt> (or
380 <tt>Build-Depends-Indep</tt>) on <tt>debhelper (>=
387 <chapt id="programs">
388 <heading>Perl Programs</heading>
389 <sect id="hash_bang">
390 <heading>Script Magic</heading>
392 All packaged perl programs must start with
393 <tt>#!/usr/bin/perl</tt> and may append such flags as are
398 <sect id="program_deps">
399 <heading>Program Dependencies</heading>
401 Programs which require <var>core</var> modules from the
402 <package>perl</package> package must specify a dependency on
406 Programs which contain explicit <tt>require
407 <var>version</var></tt> or <tt>use <var>version</var></tt>
408 statements must specify a dependency on
409 <package>perl</package> or <package>perl-base</package> with
410 the minimum required version, or more simply the current
414 As with modules, packages using <prgn>debhelper</prgn> may use
415 <manref name="dh_perl" section="1"> to automatically generate
416 dependences (see <ref id="dh_perl">).
422 <heading>Programs Embedding Perl</heading>
423 <sect id="build_embedded">
424 <heading>Building Embedded Programs</heading>
426 Programs which embed a perl interpreter must declare a
427 <tt>Build-Depends</tt> on <package>libperl-dev</package>.
430 The default linker options produced by
432 perl -MExtUtils::Embed -e ldopts
434 will link against the dynamic <tt>libperl</tt>. If programs
435 wish to link to the static library, then <tt>-lperl</tt>
436 should be changed to <file>/usr/lib/libperl.a</file> in those
441 <sect id="embedded_deps">
442 <heading>Embedded Perl Dependencies</heading>
444 Dependencies for programs linking against the shared Perl
445 library will be automatically created by
446 <prgn>dpkg-shlibdeps</prgn>. Note however that the shared
447 perl library package only suggests
448 <package>perl-base</package> and packages requiring any
449 <var>core</var> modules from the <package>perl</package>
450 package must depend upon it explicitly.
455 <appendix id="perl6">
456 <heading>Perl 6</heading>
458 The current stable upstream version at the time of this writing
459 is 5.6.0. There is currently work in progress on the next major
460 revision, although the specifications have yet to be finalised.
463 It is anticipated that when Perl 6 is released it will initially
464 be packaged as <package>perl6</package>, install the binary as
465 <file>/usr/bin/perl6</file> and use different directories for
466 packaged modules to <package>perl</package>:
471 This will allow Perl 5 and 6 packages and modules (which should
472 be packaged as <package>libfoo-bar-perl6</package>), to co-exist
473 for as long as required.
476 At some stage in the future when Perl 6 is sufficiently mature,
477 the package naming may be reversed such that the
478 <package>perl</package> package contains Perl 6 and the current
479 package becomes <package>perl5</package>.
484 <!-- Local variables: -->
485 <!-- indent-tabs-mode: t -->