Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
CPAN::Mini(3)	      User Contributed Perl Documentation	 CPAN::Mini(3)

       CPAN::Mini - create a minimal mirror of CPAN

       version 1.111013

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

	 use CPAN::Mini;

	   remote => "",
	   local  => "/usr/share/mirrors/cpan",
	   log_level =>	'debug',

       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:

       o   01mailrc.txt.gz

       o   02packages.details.txt.gz


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

	   remote => "",
	   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:

       o   "local"

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

       o   "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 <>

       o   "dirmode"

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

       o   "exact_mirror"

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

       o   "ignore_source_control"

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

       o   "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.

       o   "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.

       o   "log_level"

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

       o   "errors"

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

       o   "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 => [
	      sub { $_[0] =~ /SUNGO/ }

       o   "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 ]

       o   "also_mirror"

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

       o   "skip_cleanup"

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

       o   "offline"

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

       o   "no_conn_cache"

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

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

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


       This method updates the index files from	the CPAN.

	 $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.

	 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.


       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

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

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


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


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

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

	 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

	 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.

	 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 config
	   cpanplus - fetch the	first mirror from your config

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

       This routine loads your 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.

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

       This routine loads your 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.

       Randal Schwartz's original article on minicpan, here:

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

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

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

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

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

       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

       Thanks to David Golden for some important bugfixes and refactoring.

       o   Ricardo SIGNES <>

       o   Randal Schwartz <>

       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.24.1			  2013-04-13			 CPAN::Mini(3)


Want to link to this manual page? Use this URL:

home | help