The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


mcpani -- A command line tool to manage a CPAN Mini Mirror.


mcpani [options] < --add | --update | --mirror | --inject >


    --add               Add a new package to the repository
          --module      Name of the module to add
          --authorid    Author ID of the module
          --modversion  Version number of the module
          --file        tar.gz file of the module

    --update            Update local CPAN mirror and inject modules
    --mirror            Update local CPAN mirror from remote
    --inject            Add modules from repository to CPAN mirror


    -h, --help          This synopsis
    -H, --man           Detailed description

    -l, --local         local location for CPAN::Mini Mirror
    -r, --remote        CPAN mirror to mirror from
    -p, --passive       Enable passive ftp for mirroring.
    -v, --verbose       verbose output
    -V, --version       Version information.
        --signing-key   See CPAN::Checksums $SIGNING_KEY


mcpani uses CPAN::Mini to build or update a local CPAN mirror from a remote one. It adds two extra features:

1. an additional repository of distribution files and related information (author and module versions), separate from the local and remote mirrors, to which you can add your own distribution files.

2. the ability to inject the distribution files from your repository into a local CPAN mirror.



Add a module to the repository for later inclusion in a CPAN Mini mirror. The add command requires the following parameters:


This is the name of the module (ie CPAN::Mini::Inject).


A CPAN 'like' author ID for the module. The author ID does not need to exist on CPAN.


Version number of the module. This must match the version number in the file name.


"add" in CPAN::Mini::Inject adds all modules found in the file. These options remain for backward compatibility and do nothing.


File name and path of the module. The file name must follow the standard CPAN naming convention (the resulting file from a make tardist).


  mcpani --add --module CPAN::Mini::Inject --authorid SSORICHE
         --modversion 0.01 --file ./CPAN-Mini-Inject-0.01.tar.gz


Update your local CPAN Mini mirror from a CPAN site. Once completed add the modules contained in the repository to it. This is the same as running mcpani --mirror followed by mcpani --inject


Update the local CPAN Mini mirror from CPAN.


Add the repository modules into the CPAN Mini mirror.

-l, --local

A local directory to store the CPAN Mini mirror in. Specifying this option overrides the value in the config file.

-r, --remote

A CPAN site to create the local CPAN Mini mirror from.

-v, --verbose

Display verbose processing information

-V, --version

Display version information.


mcpani uses a simple configuration file in the following format:

 local: /www/CPAN
 repository: /work/mymodules
 passive: yes
 dirmode: 0755

Description of options:

  • local

    location to store local CPAN::Mini mirror (*REQUIRED*)

  • remote

    CPAN site(s) to mirror from. Multiple sites can be listed, with spaces between them. (*REQUIRED*)

  • repository

    Location to store modules to add to the local CPAN::Mini mirror.

  • passive

    Enable passive FTP.

  • dirmode

    Set the permissions of created directories to the specified mode (octal value). The default value is based on the umask (if supported).

mcpani will search the following four places in order:

  • file pointed to by the environment variable MCPANI_CONFIG

  • $HOME/.mcpani/config

  • /usr/local/etc/mcpani

  • /etc/mcpani


Christian Walde <>


Shawn Sorichetti <>


Please report any bugs or feature requests to, or through the web interface at I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

Copyright & License

Copyright 2004 Shawn Sorichetti, All Rights Reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.