Provided by: libcpan-mini-perl_1.111017-1_all bug

NAME

       CPAN::Mini - create a minimal mirror of CPAN

VERSION

       version 1.111017

SYNOPSIS

       (If you're not going to do something weird, you probably want to look at the minicpan command, instead.)

         use CPAN::Mini;

         CPAN::Mini->update_mirror(
           remote => "http://cpan.mirrors.comintern.su",
           local  => "/usr/share/mirrors/cpan",
           log_level => 'debug',
         );

DESCRIPTION

       CPAN::Mini provides a simple mechanism to build and update a minimal mirror of the CPAN on your local
       disk.  It contains only those files needed to install the newest version of every distribution.  Those
       files are:

       •   01mailrc.txt.gz

       •   02packages.details.txt.gz

       •   03modlist.data.gz

       •   the last non-developer release of every dist for every author

PERL VERSION

       This  library  should  run on perls released even a long time ago.  It should work on any version of perl
       released in the last five years.

       Although it may work on older versions of perl, no guarantee is made that the  minimum  required  version
       will not be increased.  The version may be increased for any reason, and there is no promise that patches
       will be accepted to lower the minimum required perl.

METHODS

   update_mirror
         CPAN::Mini->update_mirror(
           remote => "http://cpan.mirrors.comintern.su",
           local  => "/usr/share/mirrors/cpan",
           force  => 0,
           log_level => 'debug',
         );

       This  is  the  only method that need be called from outside this module.  It will update the local mirror
       with the files from the remote mirror.

       If called as a class method, "update_mirror" creates  an  ephemeral  CPAN::Mini  object  on  which  other
       methods are called.  That object is used to store mirror location and state.

       This method returns the number of files updated.

       The following options are recognized:

       •   "local"

           This is the local file path where the mirror will be written or updated.

       •   "remote"

           This  is  the  URL  of  the  CPAN  mirror from which to work.  A reasonable default will be picked by
           default.  A list of CPAN mirrors can be found at <http://www.cpan.org/SITES.html>

       •   "dirmode"

           Generally an octal number, this option sets the permissions of created directories.  It  defaults  to
           0711.

       •   "exact_mirror"

           If true, the "file_allowed" method will allow all extra files to be mirrored.

       •   "ignore_source_control"

           If   true,   CPAN::Mini   will   not   try  to  remove  source  control  files  during  cleanup.  See
           "clean_unmirrored" for details.

       •   "force"

           If true, this option will cause CPAN::Mini to read the entire module list and update anything out  of
           date, even if the module list itself wasn't out of date on this run.

       •   "skip_perl"

           If  true,  CPAN::Mini  will  skip the major language distributions: perl, parrot, and ponie.  It will
           also skip embperl, sybperl, bioperl, and kurila.

       •   "log_level"

           This defines the minimum level of message to log: debug, info, warn, or fatal

       •   "errors"

           If true, CPAN::Mini will warn with status messages on errors.  (default: true)

       •   "path_filters"

           This options provides a set of rules for filtering paths.  If a distribution matches one of the rules
           in "path_filters", it will not be mirrored.  A regex rule is matched if the path matches the regex; a
           code rule is matched if the code returns 1 when the path is passed to it.  For example, the following
           setting would skip all distributions from RJBS and SUNGO:

            path_filters => [
              qr/RJBS/,
              sub { $_[0] =~ /SUNGO/ }
            ]

       •   "module_filters"

           This option provides a set of rules for filtering modules.  It behaves like  path_filters,  but  acts
           only  on  module  names.   (Since  most  modules are in distributions with more than one module, this
           setting will probably be less useful than "path_filters".)  For example, this setting will  skip  any
           distribution containing only modules with the word "Acme" in them:

            module_filters => [ qr/Acme/i ]

       •   "also_mirror"

           This option should be an arrayref of extra files in the remote CPAN to mirror locally.

       •   "skip_cleanup"

           If  this  option  is  true,  CPAN::Mini  will  not  try  delete unmirrored files when it has finished
           mirroring

       •   "offline"

           If offline, CPAN::Mini will not attempt to contact remote resources.

       •   "no_conn_cache"

           If true, no connection cache will be  established.   This  is  mostly  useful  as  a  workaround  for
           connection cache failures.

   new
         my $minicpan = CPAN::Mini->new;

       This   method   constructs   a  new  CPAN::Mini  object.   Its  parameters  are  described  above,  under
       "update_mirror".

   mirror_indices
         $minicpan->mirror_indices;

       This method updates the index files from the CPAN.

   mirror_file
         $minicpan->mirror_file($path, $skip_if_present)

       This method will mirror the given file from the remote to the local mirror, overwriting any existing file
       unless $skip_if_present is true.

   file_allowed
         next unless $minicpan->file_allowed($filename);

       This method returns true if the given file is allowed to exist in the local mirror, even if it isn't  one
       of the required mirror files.

       By default, only dot-files are allowed.  If the "exact_mirror" option is true, all files are allowed.

   clean_unmirrored
         $minicpan->clean_unmirrored;

       This  method  looks  through  the  local  mirror's files.  If it finds a file that neither belongs in the
       mirror nor is allowed (see the "file_allowed" method), "clean_file" is called on the file.

       If you set "ignore_source_control" to a true value, then this doesn't  clean  up  files  that  belong  to
       source control systems. Currently this ignores:

               .cvs .cvsignore
               .svn .svnignore
               .git .gitignore

       Send patches for other source control files that you would like to have added.

   clean_file
         $minicpan->clean_file($filename);

       This  method,  called  by  "clean_unmirrored",  deletes  the  named file.  It returns true if the file is
       successfully unlinked.  Otherwise, it returns false.

   log_warn
   log
   log_debug
         $minicpan->log($message);

       This will log (print) the given message unless the log level is too low.

       "log", which logs at the info level, may also be called as "trace" for backward compatibility reasons.

   read_config
         my %config = CPAN::Mini->read_config(\%options);

       This routine returns a set of arguments that can be  passed  to  CPAN::Mini's  "new"  or  "update_mirror"
       methods.   It  will  look  for  a  file  called .minicpanrc in the user's home directory as determined by
       File::HomeDir.

   config_file
         my $config_file = CPAN::Mini->config_file( { options } );

       This routine returns the config file name. It first looks at for  the  "config_file"  setting,  then  the
       "CPAN_MINI_CONFIG"   environment   variable,   then   the   default   ~/.minicpanrc,   and   finally  the
       CPAN/Mini/minicpan.conf. It uses the first defined value it finds.  If the filename it selects  does  not
       exist, it returns false.

       OPTIONS is an optional hash reference of the "CPAN::Mini" config hash.

   remote_from
         my $remote = CPAN::Mini->remote_from( $remote_from, $orig_remote, $quiet );

       This  routine  take  an  string  argument and turn it into a method call to handle to retrieve the a cpan
       mirror url from a source.  Currently supported methods:

           cpan     - fetch the first mirror from your CPAN.pm config
           cpanplus - fetch the first mirror from your CPANPLUS.pm config

   remote_from_cpan
         my $remote = CPAN::Mini->remote_from_cpan;

       This routine loads your CPAN.pm config and returns the first mirror in mirror list.  You can set this  as
       your default by setting remote_from:cpan in your .minicpanrc file.

   remote_from_cpanplus
         my $remote = CPAN::Mini->remote_from_cpanplus;

       This routine loads your CPANPLUS.pm config and returns the first mirror in mirror list.  You can set this
       as your default by setting remote_from:cpanplus in your .minicpanrc file.

SEE ALSO

       Randal Schwartz's original article on minicpan, here:

               http://www.stonehenge.com/merlyn/LinuxMag/col42.html

       CPANPLUS::Backend, which provides the "local_mirror" method, which performs the same task as this module.

THANKS

       Thanks to David Dyck for letting me know about my stupid documentation errors.

       Thanks to Roy Fulbright for finding an obnoxious bug on Win32.

       Thanks to Shawn Sorichetti for fixing a stupid octal-number-as-string bug.

       Thanks  to  sungo  for  implementing  the  filters,  so  I can finally stop mirroring bioperl, and Robert
       Rothenberg for suggesting adding coderef rules.

       Thanks to Adam Kennedy for noticing and complaining about a lot of stupid little design decisions.

       Thanks to Michael Schwern and Jason Kohles, for pointing out missing documentation.

       Thanks to David Golden for some important bugfixes and refactoring.

AUTHORS

       •   Ricardo SIGNES <cpan@semiotic.systems>

       •   Randal Schwartz <merlyn@stonehenge.com>

CONTRIBUTORS

       •   Brian Wightman <MidLifeXis@wightmanfam.org>

       •   David Golden <dagolden@cpan.org>

       •   Fabrice Gabolde <fgabolde@weborama.com>

       •   Gabor Szabo <gabor@szabgab.com>

       •   Jeff Bisbee <jbisbee@cpan.org>

       •   Jeffrey Thalhammer <jeff@imaginative-software.com>

       •   Ricardo Signes <rjbs@semiotic.systems>

       •   Stephen Thirlwall <sdt@dr.com>

COPYRIGHT AND LICENSE

       This software is copyright (c) 2004 by Ricardo SIGNES.

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

perl v5.36.0                                       2023-10-01                                    CPAN::Mini(3pm)