PPM

 view release on metacpan or  search on metacpan

docs/ppm-desc2.txt  view on Meta::CPAN


Perl Package Manager (PPM)


Preamble

Perl has a strong historical connection with Unix, and the distribution
methods that currently exist serve this community well: 'do-it-yourself'
types who are accustomed to obtaining their software over the Internet and
building it from source.  CPAN has greatly simplified the process of locating
and building Perl extensions from source, and having this well-designed
source repository has undoubtedly contributed to Perl's past and present
popularity.

But platforms such as Macintosh and Windows make up the vast majority of
desktop workstations, as well as an ever-growing percentage of the server
market, and the users of these platforms typically have a different set
of expectations regarding their software than does an experienced Perl
programmer.  These users typically install binary versions of software
onto their systems, usually with the aid of an installation program.

We now have a number of binary distributions for the Perl core for these
platforms.  But one problem remains: how to give users on these platforms
access to the vast library of Perl modules and extensions that have been
written and made available on CPAN?  This document describes how we intend
to solve this problem for Windows users.  We offer it as a proposal for a
method of providing pre-built versions of Perl modules and extensions in
general, and welcome comments from the Perl community on how to make it as
useful as possible.


Introduction

PPM is a program and API intended to simplify the process of locating,
installing, removing, upgrading and otherwise maintaining pre-built Perl
modules and extensions (packages).

To obtain information about available software packages, PPM refers to files
that conform to the Open Software Description (OSD) specification. These
description files are referred to as Perl Package Description (PPD) files,
and are written in Extensible Markup Language (XML).  The glossary at the
end of this document contains further information about these terms.

Each package has an individual PPD file describing attributes such as package
location, installation script, abstract, licensing information, etc.  The
person providing the pre-built version of the package for a particular
platform generates the PPD file during the build process ("make ppd").  It is
constructed using information available in the package's Makefile.pl file or
its POD.

The PPD is then uploaded to a PPD repository, using the Perl Authors Upload
Server (PAUSE) as an authentication scheme, where is it merged with other
PPDs describing available pre-built packages for various platforms.  Since
the PPD files are written in XML, the merging can be automatically performed
by scripts, reducing the burden on repository maintainers.  The merged PPD
is then exposed on the repository to users of PPM.


PPM Usage

In a typical scenario, PPM will look at a central PPD repository to obtain a
list of available packages.  The PPD repository may be a remote location
accessed using Internet protocols such as HTTP or FTP, or a locally mounted
(or shared) directory.  Since the PPD for a package contains the information
needed to retrieve the installation archive, the software packages themselves
need not be at the same location as the PPDs.

To perform a package installation, PPM consults the package's PPD to determine
the location of the pre-built package for the platform on which it is running.
The package will usually be in
    'package-version-bin-binversion-archname-compiler.tar.gz'
format (the binary upload naming convention suggested by Andreas Koenig in
'CPAN/modules/05bindist.convention.html'), but may be in any format the
install script is written to handle.  The file is retrieved and placed in a
local 'build' directory, where it is uncompressed and unarchived if necessary.
PPM will then use installation instructions provided in the PPD in the form



( run in 0.932 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )