diff options
Diffstat (limited to 'upstream/mageia-cauldron/man3pm/CPAN::Mirrors.3pm')
-rw-r--r-- | upstream/mageia-cauldron/man3pm/CPAN::Mirrors.3pm | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man3pm/CPAN::Mirrors.3pm b/upstream/mageia-cauldron/man3pm/CPAN::Mirrors.3pm new file mode 100644 index 00000000..18340e61 --- /dev/null +++ b/upstream/mageia-cauldron/man3pm/CPAN::Mirrors.3pm @@ -0,0 +1,209 @@ +.\" -*- mode: troff; coding: utf-8 -*- +.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. +.ie n \{\ +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is >0, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{\ +. if \nF \{\ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{\ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" ======================================================================== +.\" +.IX Title "CPAN::Mirrors 3pm" +.TH CPAN::Mirrors 3pm 2023-11-28 "perl v5.38.2" "Perl Programmers Reference Guide" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH NAME +CPAN::Mirrors \- Get CPAN mirror information and select a fast one +.SH SYNOPSIS +.IX Header "SYNOPSIS" +.Vb 1 +\& use CPAN::Mirrors; +\& +\& my $mirrors = CPAN::Mirrors\->new( $mirrored_by_file ); +\& +\& my $seen = {}; +\& +\& my $best_continent = $mirrors\->find_best_continents( { seen => $seen } ); +\& my @mirrors = $mirrors\->get_mirrors_by_continents( $best_continent ); +\& +\& my $callback = sub { +\& my( $m ) = @_; +\& printf "%s = %s\en", $m\->hostname, $m\->rtt +\& }; +\& $mirrors\->get_mirrors_timings( \e@mirrors, $seen, $callback, %args ); +\& +\& @mirrors = sort { $a\->rtt <=> $b\->rtt } @mirrors; +\& +\& print "Best mirrors are ", map( { $_\->rtt } @mirrors[0..3] ), "\en"; +.Ve +.SH DESCRIPTION +.IX Header "DESCRIPTION" +.IP "new( LOCAL_FILE_NAME )" 4 +.IX Item "new( LOCAL_FILE_NAME )" +Create a new CPAN::Mirrors object from LOCAL_FILE_NAME. This file +should look like that in http://www.cpan.org/MIRRORED.BY . +.IP \fBcontinents()\fR 4 +.IX Item "continents()" +Return a list of continents based on those defined in \fIMIRRORED.BY\fR. +.IP "countries( [CONTINENTS] )" 4 +.IX Item "countries( [CONTINENTS] )" +Return a list of countries based on those defined in \fIMIRRORED.BY\fR. +It only returns countries for the continents you specify (as defined +in \f(CW\*(C`continents\*(C'\fR). If you don't specify any continents, it returns all +of the countries listed in \fIMIRRORED.BY\fR. +.IP "mirrors( [COUNTRIES] )" 4 +.IX Item "mirrors( [COUNTRIES] )" +Return a list of mirrors based on those defined in \fIMIRRORED.BY\fR. +It only returns mirrors for the countries you specify (as defined +in \f(CW\*(C`countries\*(C'\fR). If you don't specify any countries, it returns all +of the mirrors listed in \fIMIRRORED.BY\fR. +.IP "get_mirrors_by_countries( [COUNTRIES] )" 4 +.IX Item "get_mirrors_by_countries( [COUNTRIES] )" +A more sensible synonym for mirrors. +.IP "get_mirrors_by_continents( [CONTINENTS] )" 4 +.IX Item "get_mirrors_by_continents( [CONTINENTS] )" +Return a list of mirrors for all of continents you specify. If you don't +specify any continents, it returns all of the mirrors. +.Sp +You can specify a single continent or an array reference of continents. +.IP "get_countries_by_continents( [CONTINENTS] )" 4 +.IX Item "get_countries_by_continents( [CONTINENTS] )" +A more sensible synonym for countries. +.IP default_mirror 4 +.IX Item "default_mirror" +Returns the default mirror, http://www.cpan.org/ . This mirror uses +dynamic DNS to give a close mirror. +.IP best_mirrors 4 +.IX Item "best_mirrors" +\&\f(CW\*(C`best_mirrors\*(C'\fR checks for the best mirrors based on the list of +continents you pass, or, without that, all continents, as defined +by \f(CW\*(C`CPAN::Mirrored::By\*(C'\fR. It pings each mirror, up to the value of +\&\f(CW\*(C`how_many\*(C'\fR. In list context, it returns up to \f(CW\*(C`how_many\*(C'\fR mirrors. +In scalar context, it returns the single best mirror. +.Sp +Arguments +.Sp +.Vb 5 +\& how_many \- the number of mirrors to return. Default: 1 +\& callback \- a callback for find_best_continents +\& verbose \- true or false on all the whining and moaning. Default: false +\& continents \- an array ref of the continents to check +\& external_ping \- if true, use external ping via Net::Ping::External. Default: false +.Ve +.Sp +If you don't specify the continents, \f(CW\*(C`best_mirrors\*(C'\fR calls +\&\f(CW\*(C`find_best_continents\*(C'\fR to get the list of continents to check. +.Sp +If you don't have Net::Ping v2.13 or later, needed for timings, +this returns the default mirror. +.Sp +\&\f(CW\*(C`external_ping\*(C'\fR should be set and then \f(CW\*(C`Net::Ping::External\*(C'\fR needs +to be installed, if the local network has a transparent proxy. +.IP "get_n_random_mirrors_by_continents( N, [CONTINENTS] )" 4 +.IX Item "get_n_random_mirrors_by_continents( N, [CONTINENTS] )" +Returns up to N random mirrors for the specified continents. Specify the +continents as an array reference. +.ie n .IP "get_mirrors_timings( MIRROR_LIST, SEEN, CALLBACK, %ARGS );" 4 +.el .IP "get_mirrors_timings( MIRROR_LIST, SEEN, CALLBACK, \f(CW%ARGS\fR );" 4 +.IX Item "get_mirrors_timings( MIRROR_LIST, SEEN, CALLBACK, %ARGS );" +Pings the listed mirrors and returns a list of mirrors sorted in +ascending ping times. +.Sp +\&\f(CW\*(C`MIRROR_LIST\*(C'\fR is an anonymous array of \f(CW\*(C`CPAN::Mirrored::By\*(C'\fR objects to +ping. +.Sp +The optional argument \f(CW\*(C`SEEN\*(C'\fR is a hash reference used to track the +mirrors you've already pinged. +.Sp +The optional argument \f(CW\*(C`CALLBACK\*(C'\fR is a subroutine reference to call +after each ping. It gets the \f(CW\*(C`CPAN::Mirrored::By\*(C'\fR object after each +ping. +.IP "find_best_continents( HASH_REF );" 4 +.IX Item "find_best_continents( HASH_REF );" +\&\f(CW\*(C`find_best_continents\*(C'\fR goes through each continent and pings \f(CW\*(C`N\*(C'\fR +random mirrors on that continent. It then orders the continents by +ascending median ping time. In list context, it returns the ordered list +of continent. In scalar context, it returns the same list as an +anonymous array. +.Sp +Arguments: +.Sp +.Vb 6 +\& n \- the number of hosts to ping for each continent. Default: 3 +\& seen \- a hashref of cached hostname ping times +\& verbose \- true or false for noisy or quiet. Default: false +\& callback \- a subroutine to run after each ping. +\& ping_cache_limit \- how long, in seconds, to reuse previous ping times. +\& Default: 1 day +.Ve +.Sp +The \f(CW\*(C`seen\*(C'\fR hash has hostnames as keys and anonymous arrays as values. +The anonymous array is a triplet of a \f(CW\*(C`CPAN::Mirrored::By\*(C'\fR object, a +ping time, and the epoch time for the measurement. +.Sp +The callback subroutine gets the \f(CW\*(C`CPAN::Mirrored::By\*(C'\fR object, the ping +time, and measurement time (the same things in the \f(CW\*(C`seen\*(C'\fR hashref) as +arguments. \f(CW\*(C`find_best_continents\*(C'\fR doesn't care what the callback does +and ignores the return value. +.Sp +With a low value for \f(CW\*(C`N\*(C'\fR, a single mirror might skew the results enough +to choose a worse continent. If you have that problem, try a larger +value. +.SH AUTHOR +.IX Header "AUTHOR" +Andreas Koenig \f(CW\*(C`<andk@cpan.org>\*(C'\fR, David Golden \f(CW\*(C`<dagolden@cpan.org>\*(C'\fR, +brian d foy \f(CW\*(C`<bdfoy@cpan.org>\*(C'\fR +.SH LICENSE +.IX Header "LICENSE" +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. +.PP +See <http://www.perl.com/perl/misc/Artistic.html> |