Make Perl modules into packages with CPAN::Packager
1. YAPC::Asia 2009 2009/09/10
CPAN::Packager
~Help to make packages from CPAN module~
dann
CPAN::Packager github.com/dann dann
2. About me
• Dann
• Creator of CPAN::Packager
• HTTP::Engine(Middleware), Mouse
etc
• http://github.com/dann
CPAN::Packager github.com/dann dann
3. What is CPAN::Packager?
A tool to help you make Redhat
or Debian packages from perl
modules on CPAN
CPAN::Packager github.com/dann dann
4. Motivation
• It’s very time wasting to install Catalyst,
Plagger... a LOT of dependencies
• different module versions on each server....
• Can’t make packages because XXX module
has a LOT of DEPENDENCIES...
Make RPM/Deb packages
and manage them with packaging system
CPAN::Packager github.com/dann dann
5. The problem
• cpanflute2, dh-make-perl
• Don’t resolve module’s dependencies
• CPANPLUS::Dist::{Deb, RPM}
• resolve module dependency at first level
only
• can’t fix incorrect module’s dependencies
manually
CPAN::Packager github.com/dann dann
6. Packaging System requirements
• Resolve module’s dependencies
• Can fix incorrect module dependencies
manually
• fix module’s incorrect dependencies with a
configuration
• Can skip moduledependenciesmodule has
some incorrect
build if the
CPAN::Packager github.com/dann dann
7. Feature
and
How to use
CPAN::Packager github.com/dann dann
8. Key Features of CPAN::Packager
• Resolve module dependencies automatically
• Can fix module dependencies manually
• Can skip incorecct module manually
CPAN::Packager can automatically resolve
dependencies and manually fixes module’s
incorrect dependencies with a configuration
CPAN::Packager github.com/dann dann
9. How to use CPAN::Packager
How to build a module on CPAN
sudo cpan-packager --module Moose --builder RPM --
conf conf/config.yaml
Which type of package
configuration for
manually module’s do you develop?
incorrectness.
How to develop multiple modules on CPAN
sudo cpan-packager --modulelist modules.list --builder
RPM --conf conf/config.yaml
module lists
CPAN::Packager github.com/dann dann
10. How to write the configuration
---
global:
fix_module_name: Common settings
- from: Template::Toolkit for all modules
to: Template
fix_package_depends: []
no_depends:
skip_name_resolve_modules: []
modules:
- module: Test::Exception Eash module’s setting
to fix incorrectness of
depends: the module
- module: Test::Simple
no_depends:
- module: Test::Builder::Tester
- module: HTTP::Request::AsCGI
skip_build: 1
CPAN::Packager github.com/dann dann
11. Demo
build a HTTP::Engine RPM package
CPAN::Packager github.com/dann dann
12. • CPAN::Packager help you to make RPM/Deb package
• Automatically resolve module dependencies
• Can fix modules dependencies with a configuration
• Repository
• http://github.com/dann/p5-cpan-packager/tree/
master
Angelos github.com/dann dann