NAME
CPANPLUS::Dist::Debora - Create Debian or RPM packages from Perl modules
VERSION
version 0.014
SYNOPSIS
### from the cpanp interactive shell
$ cpanp
CPAN Terminal> i Some-Module --format=CPANPLUS::Dist::Debora
### using the command-line tool
$ cpan2dist --format CPANPLUS::Dist::Debora Some-Module
$ cd ~/rpmbuild/RPMS/noarch
$ sudo rpm -i perl-Some-Module-1.0-1.noarch.rpm
$ cd ~/.cpanplus/5.36.1/build/XXXX
$ sudo dpkg -i libsome-module-perl_1.0-1cpanplus_all.deb
DESCRIPTION
This CPANPLUS plugin creates Debian or RPM packages from Perl distributions. The created packages can be installed with CPANPLUS, dpkg or rpm.
Usage
Install Perl distributions from an interactive shell. The sudo command must be installed and configured.
$ cpanp
CPAN Terminal> i Some-Module --format=CPANPLUS::Dist::Debora
Or create packages from the command-line.
$ cpan2dist --format CPANPLUS::Dist::Debora Some-Module
Configuration
Start an interactive shell to edit the CPANPLUS settings.
$ cpanp
CPAN Terminal> s reconfigure
Make CPANPLUS::Dist::Debora your default format by setting the dist_type
key.
CPAN Terminal> s conf dist_type CPANPLUS::Dist::Debora
Some Perl distributions fail to show interactive prompts if the verbose
option is not set.
CPAN Terminal> s conf verbose 1
On some systems signature checks might be enabled by default, but many Perl distributions do not provide signatures.
CPAN Terminal> s conf signature 0
CPANPLUS uses less memory if the SQLite backend is enabled.
CPAN Terminal> s conf source_engine CPANPLUS::Internals::Source::SQLite
Make your changes permanent.
CPAN Terminal> s save
The settings are stored in ~/.cpanplus/lib/CPANPLUS/Config/User.pm.
FREQUENTLY ASKED QUESTIONS
How can I install a specific version of a Perl distribution?
Append the version to the distribution name.
cpanp i Some-Module-0.9
How can I install a Perl distribution from the local filesystem?
Use a file URI.
cpanp i file:///tmp/Some-Module-1.0.tar.gz
rm ~/.cpanplus/authors/id/UNKNOWN-ORIGIN/Some-Module-1.0.tar.gz
How can I list packages installed with CPANPLUS?
dpkg-query -W -f '${Package} ${Version}\n' | \
perl -anE 'say $F[0] if $F[1] =~ /cpanplus/' | sort
rpm -qa --qf '%{NAME} %{VENDOR}\n' | \
perl -anE 'say $F[0] if $F[1] =~ /CPANPLUS/' | sort
How can I force a manual update of the CPAN indices?
cpanp x --update_source
SUBROUTINES/METHODS
format_available
my $is_available = CPANPLUS::Dist::Debora->format_available;
Returns a boolean indicating whether or not the required package management tools are available.
init
my $ok = $dist->init;
Sets up the CPANPLUS::Dist::Debora object for use. Called automatically whenever a new object is created.
prepare
my $ok = $dist->prepare(verbose => 0|1);
Runs perl Makefile.PL
or perl Build.PL
and determines what prerequisites this distribution declared.
create
my $ok = $dist->create(skiptest => 0|1, verbose => 0|1);
Builds the prepared distribution, runs the test suite and creates the package. Also attempts to satisfy any prerequisites the module may have.
install
my $ok = $dist->install(verbose => 0|1);
Installs the created package with sudo and dpkg or rpm. If the package is already installed on the system, the existing package will be replaced by the new package.
DIAGNOSTICS
- open3: exec failed: Argument list too long
-
CPANPLUS can hit this limit if hundreds of Perl distributions are built in one run. Rerun CPANPLUS or build your packages in chunks.
- Could not run 'COMMAND'
-
A system command such as dpkg or rpm could not be run.
- Could not render TEMPLATE
-
A template could not be filled in.
- Could not create 'FILE'
-
A file could not be created.
- Could not stat 'FILE'
-
File permissions could not be read.
- Could not chmod 'FILE'
-
File permissions could not be set.
- Could not remove 'FILE'
-
A file could not be removed.
- Could not traverse 'DIR'
-
A directory could not be traversed.
- File not found 'FILE'
-
A file does not exist or was removed while CPANPLUS was running.
- Unknown installer type
-
CPANPLUS::Dist::Debora supports CPANPLUS::Dist::Build and CPANPLUS::Dist::MM.
CONFIGURATION AND ENVIRONMENT
All files and environment variables have to be encoded in ASCII or UTF-8.
Files
~/.rpmmacros
The macros %packager
, %distribution
and %vendor
are used. RPM packages are stored in %{_topdir}/RPMS.
/etc/os-release, /usr/lib/os-release
The os-release files are read unless the macro %distribution
is set.
/var/lib/dpkg/available
The Debian package epochs are read from /var/lib/dpkg/available.
Environment variables
BUILD
The build number that is added to packages as a Debian revision or RPM release. Defaults to 1.
As packages may be built recursively, setting this variable is mainly useful when all packages are rebuilt after Perl has been upgraded.
EPOCH
On RPM-based systems, you might have to set the package epoch manually as there is no standardized database that can be queried for epochs. On Debian-based systems, it is generally not necessary to set epochs manually. Defaults to no package epoch.
DEBFULLNAME, NAME, GITLAB_USER_NAME
The packager's name.
DEBEMAIL, EMAIL, GITLAB_USER_EMAIL
The packager's email address.
If the packager's name is unavailable and if the email address has got the format "name <address>", the name is taken from the email address.
If the packager's name cannot be extracted from the environment, the name is taken from the gecos field in the password database.
INSTALLDIRS
The installation location. Can be "vendor" or "site". Defaults to "vendor".
SOURCE_DATE_EPOCH
Clamps timestamps to the specified Unix time. If not set, the last modification time of the source is used.
DEPENDENCIES
Requires Perl 5.16 and the modules CPANPLUS, CPANPLUS::Dist::Build, Module::Pluggable, Software::License and Text::Template from CPAN. IPC::Run and Term::ReadLine::Gnu are recommended.
On Debian-based systems, install the packages "perl", "build-essential", "debhelper", "fakeroot" and "sudo". The minimum supported debhelper version is 12.
On RPM-based systems, install the packages "perl", "rpm-build", "gcc", "make", "sudo" and, if available, "perl-devel" and "perl-generators".
INCOMPATIBILITIES
None.
BUGS AND LIMITATIONS
You have to install the appropriate development packages yourself if you would like to build Perl distributions that require C libraries. For example, install the package "libssl-dev" or "openssl-devel" if the distribution uses the OpenSSL libraries.
Enable verbose
mode (see above) if you would like to get feedback while CPANPLUS downloads the list of Perl distributions from the Comprehensive Perl Archive Network (CPAN). Use CPAN::Mini or a repository manager to mirror the CPAN locally.
Some Perl distributions fail to show interactive prompts if the verbose
option is not set.
Software::LicenseUtils recognizes a lot of common licenses but isn't perfect.
SEE ALSO
cpanp(1), cpan2dist(1), sudo(8)
AUTHOR
Andreas Vögele <voegelas@cpan.org>
LICENSE AND COPYRIGHT
Copyright (C) 2024 Andreas Vögele
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.