Table of Contents
The installation directory for Debian modules must be different
from that for core and
site modules.
The current Perl packaging uses the
vendor directories for this purpose,
which are at present as described in Section 2.3, “Module Path” as
vendor.
The Perl distribution includes many modules available separately
from CPAN which may
have a newer version. The intent of the @INC
ordering (described in Section 2.3, “Module Path”) is to allow such
modules to be packaged to vendor which
take precedence over the version in
core. A packaged module which shadows
a core module in this way must be a
newer version.
Module packages must install manual pages into the standard
directories (see Section 2.4, “Documentation”) using the extensions
.1p and .3pm to ensure that
no conflict arises where a packaged module duplicates a
core module.
.packlist files should not be installed.
Perl module packages should be named for the primary module
provided. The naming convention is to lowercase the Perl module
name, prepend, lib, change all occurrences of
:: to -, and append
-perl. For example:
Table 4.1. Module to package mappings
| Module | Package |
|---|---|
| Foo::Bar | libfoo-bar-perl |
| Foo::Bar::Baz | libfoo-bar-baz-perl |
| Foo::BarBaz | libfoo-barbaz-perl |
Packages which include multiple modules may additionally include provides for the additional modules using the same convention.
A module should use the following lines in the
debian/rules build
target:
[7]
perl Makefile.PL INSTALLDIRS=vendor $(MAKE) OPTIMIZE="-O2 -g -Wall"
and this one to install the results into the temporary tree:
$(MAKE) install DESTDIR=$(CURDIR)/debian/<tmp>
Architecture-independent modules which require
core modules from the perl package must specify a
dependency on that package.
Modules which contain explicit require
or versionuse
statements must
specify a dependency on versionperl or perl-base with the minimum required
version, or more simply the current version.
Binary modules must specify a dependency on either perl or perl-base with a minimum version of
the perl package used to
build the module. Additionally, all binary modules (regardless
of their installation directory) and any other modules installed
into $Config{vendorarch} must depend on the
expansion of perlapi-$Config{debian_abi} using
the Config module. If
$Config{debian_abi} is empty or not set,
$Config{version} must be used.
Rather than hard-coding the dependencies into the control file,
using a substitution such as ${perl:Depends}
is suggested. This allows the dependencies to be determined at
build time and written to the substvars
file in the form
perl:Depends=.[9]
deps
Packages built with debhelper may use
dh_perl(1)
to generate this substitution automatically. This additionally
requires a versioned Build-Depends (or
Build-Depends-Indep) on debhelper
(>= 3.0.18).
[7]
The environment variable PERL_MM_OPT may be
used to pass the INSTALLDIRS=vendor option
in cases where Makefile.PL is not invoked
directly from
debian/rules
[8] Replace <tmp> with the appropriate directory (nominally just tmp)
[9] Please note that dependencies caused by versioned uses and on separately packaged modules are not included in this variable and must be explicitly included.