SlideShare a Scribd company logo
.

BUILDING YOUR OWN CPAN WITH

PINTO

.

andrefs@andrefs.com
@about_andrefs
PTPW 2013
.

PRESENTATION
HIGHLIGHTS
.

⋆ LIVE ACTION ⋆

.

.
slides might be finished as we speak — or never at all
.
.
⋆ THRILLS AND CHILLS ⋆

.
most of this stuff is stolen anyway — references at the end
.
.
⋆ INTERACTIVE MEDIA ⋆

.
advanced features will be left as an exercise
for
. the reader
.

WHO’S PINTO?

.
.

WHO’S PINTO?

.
.

WHO’S PINTO?
.
.

.

“an application for creating and
managing a custom CPAN-like
repository of Perl modules”
.
.

COMMON DEV
PROBLEMS

.

• how to distribute internally in-house
developed modules which are not on
CPAN? (e.g. confidential, too specific, …)
• how to distribute internally a
(temporarily) patched third-party
module?
.

COMMON DEV
PROBLEMS

.

• how to keep track of which versions of
your app’s dependencies are safe? (and
how to make them available)
• how to keep track of which versions
break your app?
.

COMMON DEV
PROBLEMS

.

• how to quickly replicate the
production/testing/development
environment?
• how to efficiently ensure that everybody
is using the same versions of the
dependencies?
.

SO WHAT?
With Pinto you can:
• keep one or more instances of privates
CPAN-like repos
• distribute in-house modules using the
standard tools from the CPAN ecosystem
• simultaneously manage dependencies
for multiple apps/projects
• pin specific versions of module to fix
broken dependencies

.
.

PINTO ADVANTAGES

.

• supports multiple indexes
• helps manage incompatibilies between
dependencies
• has built-in version control
• can pull archives from multiple remote
repositories
• supports team development
.
.

USAGE
1. create a Pinto repository
2. pull CPAN modules, add your own, freeze
versions, …
3. point your /cpan(m|p)?/ to your Pinto
repo when installing your app’s
dependencies
4. repeat steps 2 and 3 throughout project’s
lifecycle

.
.

BASIC OPS
.
create a repo
.
pinto -r ~/repo init
.
.

.

pull a CPAN module

.
pinto -r ~/repo pull Dancer
.
.

add a module of your own

.
pinto -r ~/repo add My-Module_01.tgz
.
.

BASIC OPS
.

pinto -r repo list
. Acme::Magic::Pony
[rf-]
[rf-] Smart::Comments
[rf-] Data::Dump
[rf-] Data::Dump::Trace
...

.

0.03
1.000005
1.23
0.02

.

JLAVALLEE/Acme-Magic-Pony-0.03.tar.gz
DCONWAY/Smart-Comments-1.000005.tar.gz
GAAS/Data-Dump-1.22.tar.gz
GAAS/Data-Dump-1.22.tar.gz
.

PINNING VERSIONS

.

• Control exactly which versions go into
your repo
• pinto -r ~/repo pin Data::Dump
.

pinto -r repo list
.
...

[rl!] Data::Dump
[rl!] Data::Dump::Trace
...

.

1.22 GAAS/Data-Dump-1.22.tar.gz
0.02 GAAS/Data-Dump-1.22.tar.gz
.

PATCHES
• Build your own custom versions of CPAN
modules
• Add them to your repo
• pinto -r ~/repo add Data-Dump-

.

1.22_PATCHED.tar.gz

.

pinto -r repo list
.
...

[rl!] Data::Dump
[rl!] Data::Dump::Trace
...

.

1.23 ANDREFS/Data-Dump-1.22_PATCHED.tar.gz
0.02 ANDREFS/Data-Dump-1.22_PATCHED.tar.gz
.

STACKS

.

• Pinto seems nice, but what about:
• projects with distinct dependencies?
• projects with conflicting dependencies
versions?
• dependencies for distinct environments?

• Each stack is an isolated repository
.

STACKS
.

.

pinto -r repo stacks
.
.

• sapo_noticias
• sapo_desporto
.

STACKS
.

.

pinto -r repo stacks
.

.

•
•
•
•

sapo_noticias_dev

sapo_noticias_prod
sapo_desporto_dev
sapo_desporto_prod
.
.

LOG

pinto -r repo log
.

revision eaddeea0-cdc3-46c1-996f-43d6bbddb03c
Date: Oct 24, 2013 10:30:40 AM
User: andrefs

.

Pin ANDREFS/Data-Dump-1.23_PATCHED.tar.gz
revision bb3e6631-d087-4904-9cfd-475bde3b14f3
Date: Oct 22, 2013 10:23:28 PM
User: andrefs
Add ANDREFS/Data-Dump-1.23_PATCHED.tar.gz
revision 1b7456ed-f3b1-43f8-8e08-830322272ca7
Date: Oct 22, 2013 10:22:50 PM
User: andrefs

.

Pull GAAS/Data-Dump-1.22.tar.gz
.

DOC
.

.

App::Pinto::Command::doc

.
pinto -r ~/repo doc --out=docs
.
.

DOC

.
.

PINTOD
•
•
•
•

.

web API to a Pinto repository
manage and inspect the repository
use it with CPAN clients
basic HTTP authentication, or other
authentication schemes
• PSGI compatible, by default runs under
Plack::Runner using Starman
.

PINTO VS PAUSE

.

• Pinto does not promise to index exactly
like PAUSE does
• Pinto does not understand author
permissions
• Pinto does not enforce security
.

USEFULL STUFF
•
•
•
•
•

.

Bash::Completion::Plugins::pinto
Dist::Zilla::Plugin::Pinto::Add
Pinto::Remote

Pinto::Action::Statistics
Pinto::Action::Clean
.

MORE STUFF

.

• MyCPAN::App::DPAN
• Stratopan
•
.

WHAT’S LEFT?
.
.
A
. uthentication and authorization

.
.

WHAT’S LEFT?
.
.
A
. uthentication and authorization

.

• Who can create, modify or delete existing
stacks?
• Who can pin or unpin modules in a given
stack?
• Who can make new releases to a stack?
• people ↔ stacks ↔ modules
.

REFERENCES
•
•
•
•
•
•
•

.

Pinto::Manual::Tutorial
Pinto::Manual::QuickStart
MyCPAN::App::DPAN

Pinto+Stratopan+Love (presentation by Jeffrey Thalhammer)
Saved by Pinto (blog post by Jeffrey Thalhammer)
Santa Has Dependencies Too (Perl Advent Calendar 2012)
i-might-have-missed-one.com
.

QUESTIONS?

.
.

THANK YOU

.

More Related Content

PDF
HoneyPy & HoneyDB (CarolinaCon 13)
PDF
Build your first Monster APP
PDF
Golang and Domain Specific Languages - Lorenzo Fontana - Codemotion Rome 2017
PPTX
Alf Lizzio 2015
PPTX
The CACUSS Identity Project
PPTX
Thunderbird imap settings
DOC
PPTX
Mobil Cihaz Uygulamalarında Sql Server Ce Kullanımı
HoneyPy & HoneyDB (CarolinaCon 13)
Build your first Monster APP
Golang and Domain Specific Languages - Lorenzo Fontana - Codemotion Rome 2017
Alf Lizzio 2015
The CACUSS Identity Project
Thunderbird imap settings
Mobil Cihaz Uygulamalarında Sql Server Ce Kullanımı

Viewers also liked (12)

PDF
Mktng
PDF
Our Own Success Summit
PPTX
PPT
Kms 6 7 Newfeatures En
PPS
Mind Stream International By Pictures
PPTX
Stresslesstoptips 140417050121-phpapp02
PPTX
Final mh 101 for owls 2015(1)
PPTX
Universal Design August Workshop
PPTX
Business Lending
PPTX
iphone ios7 imap settings netregistry ssl
PPS
242260 rosette1945
PDF
Asset finance fact sheet email
Mktng
Our Own Success Summit
Kms 6 7 Newfeatures En
Mind Stream International By Pictures
Stresslesstoptips 140417050121-phpapp02
Final mh 101 for owls 2015(1)
Universal Design August Workshop
Business Lending
iphone ios7 imap settings netregistry ssl
242260 rosette1945
Asset finance fact sheet email
Ad

Similar to Building your own CPAN with Pinto (15)

KEY
Pinto+Stratopan+Love
KEY
Dependency Management With Pinto
PDF
Perl Development Environment Tooling
PDF
MyCPAN ( LA.pm, September 2007 )
PDF
CPANci: Continuous Integration for CPAN
PDF
Perl Dist::Surveyor 2011
PDF
CPAN 模組二三事
PDF
CPAN For Private Code
PDF
MyCPAN (Frozen Perl 2008 Lightning Talk)
ODP
30 Minutes To CPAN
PDF
Build and deploy scientific Python Applications
PDF
Managing Perl Installations: A SysAdmin's View
PDF
Painless Perl Ports with cpan2port
PDF
21st Century CPAN Testing: CPANci
PDF
CPAN Training
Pinto+Stratopan+Love
Dependency Management With Pinto
Perl Development Environment Tooling
MyCPAN ( LA.pm, September 2007 )
CPANci: Continuous Integration for CPAN
Perl Dist::Surveyor 2011
CPAN 模組二三事
CPAN For Private Code
MyCPAN (Frozen Perl 2008 Lightning Talk)
30 Minutes To CPAN
Build and deploy scientific Python Applications
Managing Perl Installations: A SysAdmin's View
Painless Perl Ports with cpan2port
21st Century CPAN Testing: CPANci
CPAN Training
Ad

More from andrefsantos (11)

PDF
Elasto Mania
PDF
Slides
PDF
Identifying similar text documents
PDF
Cleaning plain text books with Text::Perfide::BookCleaner
PDF
Poster - Bigorna, a toolkit for orthography migration challenges
PDF
Text::Perfide::BookCleaner, a Perl module to clean and normalize plain text b...
PDF
A survey on parallel corpora alignment
PDF
Detecção e Correcção Parcial de Problemas na Conversão de Formatos
PDF
Bigorna - a toolkit for orthography migration challenges
PDF
Bigorna
PDF
Mojolicious lite
Elasto Mania
Slides
Identifying similar text documents
Cleaning plain text books with Text::Perfide::BookCleaner
Poster - Bigorna, a toolkit for orthography migration challenges
Text::Perfide::BookCleaner, a Perl module to clean and normalize plain text b...
A survey on parallel corpora alignment
Detecção e Correcção Parcial de Problemas na Conversão de Formatos
Bigorna - a toolkit for orthography migration challenges
Bigorna
Mojolicious lite

Recently uploaded (20)

PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPT
Teaching material agriculture food technology
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
NewMind AI Weekly Chronicles - August'25-Week II
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Spectral efficient network and resource selection model in 5G networks
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Approach and Philosophy of On baking technology
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
A comparative analysis of optical character recognition models for extracting...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Machine learning based COVID-19 study performance prediction
PPTX
sap open course for s4hana steps from ECC to s4
Advanced methodologies resolving dimensionality complications for autism neur...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Dropbox Q2 2025 Financial Results & Investor Presentation
Teaching material agriculture food technology
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
NewMind AI Weekly Chronicles - August'25-Week II
Review of recent advances in non-invasive hemoglobin estimation
Spectral efficient network and resource selection model in 5G networks
The AUB Centre for AI in Media Proposal.docx
Approach and Philosophy of On baking technology
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
A comparative analysis of optical character recognition models for extracting...
Reach Out and Touch Someone: Haptics and Empathic Computing
20250228 LYD VKU AI Blended-Learning.pptx
Machine learning based COVID-19 study performance prediction
sap open course for s4hana steps from ECC to s4

Building your own CPAN with Pinto