NAME
Pinto::Manual - What Pinto is, and how to use it
VERSION
version 0.040_002
DESCRIPTION
This document is an overview of the Pinto tool suite, and a general guide for using Pinto in the real world. It is a work-in-progress, so feel free to send suggestions to the author.
GOALS
Pinto has two primary goals. First, Pinto seeks to address the problem of instability in the CPAN mirrors. Distribution archives are constantly added and removed from the CPAN, so if you use it to build a system or application, you may not get the same result twice. Second, Pinto seeks to enable developers to use the CPAN toolchain for building, testing, and dependency management of their own local software, even if they never plan to release it to the CPAN.
Pinto accomplishes these goals by providing a suite of tools for creating and managing your own custom repositories of distribution archives. These repositories can contain any distribution archives you like, and can be used with the standard CPAN toolchain.
PRIOR ART
The idea of a custom repository is not new. Randal Schwartz presented the idea back in 2002. Subsequently, modules like CPAN::Site and CPAN::Mini were released. More recently, OrePAN and MyCPAN::App::DPAN have emerged as well.
Over the last few years, I personally used various combinations of those modules to create custom repositories at several organizations. But they always required some wrapping and/or glue to make them usable in the development cycle. And none of them seemed to be designed for extension.
I wanted a suite of tools that would work out-of-the-box, and would accommodate a fairly wide range of use cases. Hence, Pinto was born.
COMPONENTS
The Pinto suite consists of a core set of libraries and three command line utilities. Each of these utilities ships in a separate distribution, so you don't have to install the whole kit if you're only going to use a subset of the Pinto suite. However, you can install Task::Pinto if you'd like to get everything in one shot.
pinto-admin
pinto-admin is a utility for creating and managing a Pinto repository. It supports the core operations of adding local distribution archives and pulling archives from other repositories. It also provides reports about the repository and its contents.
pinto-server
pinto-server provides a web service interface to your Pinto repository. This allows multiple (possibly remote) developers to manage a central repository. pinto-server also functions as the backend server to installer clients like cpan, cpanp, and cpanm.
pinto-remote
pinto-remote is a utility for interacting with a remote Pinto repository (via pinto-server). It supports most of the operations supported by pinto-admin.
TERMINOLOGY
Before going any further, I should stop and spell out the terminology that I'm going to use.
- Archive
-
An "archive" is the file that developers ship, which contains all their application/library code, test cases, build scripts etc. Conversely, the archive is the file that users must fetch to install the application/library. Sometimes I also refer to these as "distributions".
- Package
-
A "package" is something inside a distribution archive that provides some unit of functionality. In Perl, packages are declared with the
package
keyword. Some folks call these "modules" but I try to avoid that term because it is overloaded. - Prerequisite
-
A "prerequisite" is a package that must be installed for the sake of another distribution archive. Sometimes I call these "dependencies".
CONCEPTS
- Stack
-
All CPAN-like repositories have an index which maps the latest version of each package to the archive that contains it. But usually, there is only one such index. With Pinto, there can be many indexes. Each of
- Pin
-
...
PINTO BASICS
PULLING DISTRIBUTIONS FROM THE CPAN
ADDING YOUR OWN DISTRIBUTIONS
PATCHING A CPAN DISTRIBUTION
ADVANCED PINTO
CREATING STACKS
WORKING WITH STACKS
MANAGING CHANGE
PINTO AND THE DEVELOPMENT CYCLE
PINTO AND TEAMS
PINTO AND DEPLOYMENT
PINTO AND VERSION CONTROL SYSTEMS
PINTO AND OTHER PACKAGING SYSTEMS
PINTO AND OTHER CPAN TOOLS
EXTENDING PINTO
FUTURE PLANS
AUTHOR
Jeffrey Ryan Thalhammer <jeff@imaginative-software.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Imaginative Software Systems.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.