1App::cpanminus(3) User Contributed Perl Documentation App::cpanminus(3)
2
3
4
6 App::cpanminus - get, unpack, build and install modules from CPAN
7
9 cpanm Module
10
11 Run "cpanm -h" or "perldoc cpanm" for more options.
12
14 cpanminus is a script to get, unpack, build and install modules from
15 CPAN and does nothing else.
16
17 It's dependency free (can bootstrap itself), requires zero
18 configuration, and stands alone. When running, it requires only 10MB of
19 RAM.
20
22 There are several ways to install cpanminus to your system.
23
24 Package management system
25 There are Debian packages, RPMs, FreeBSD ports, and packages for other
26 operation systems available. If you want to use the package management
27 system, search for cpanminus and use the appropriate command to
28 install. This makes it easy to install "cpanm" to your system without
29 thinking about where to install, and later upgrade.
30
31 Installing to system perl
32 You can also use the latest cpanminus to install cpanminus itself:
33
34 curl -L https://cpanmin.us | perl - --sudo App::cpanminus
35
36 This will install "cpanm" to your bin directory like "/usr/local/bin"
37 and you'll need the "--sudo" option to write to the directory, unless
38 you configured "INSTALL_BASE" with local::lib.
39
40 Installing to local perl (perlbrew, plenv etc.)
41 If you have perl in your home directory, which is the case if you use
42 tools like perlbrew or plenv, you don't need the "--sudo" option, since
43 you're most likely to have a write permission to the perl's library
44 path. You can just do:
45
46 curl -L https://cpanmin.us | perl - App::cpanminus
47
48 to install the "cpanm" executable to the perl's bin path, like
49 "~/perl5/perlbrew/bin/cpanm".
50
51 Downloading the standalone executable
52 You can also copy the standalone executable to whatever location you'd
53 like.
54
55 cd ~/bin
56 curl -L https://cpanmin.us/ -o cpanm
57 chmod +x cpanm
58
59 This just works, but be sure to grab the new version manually when you
60 upgrade because "--self-upgrade" might not work with this installation
61 setup.
62
63 Troubleshoot: HTTPS warnings
64 When you run "curl" commands above, you may encounter SSL handshake
65 errors or certification warnings. This is due to your HTTP client
66 (curl) being old, or SSL certificates installed on your system needs to
67 be updated.
68
69 You're recommended to update the software or system if you can. If that
70 is impossible or difficult, use the "-k" option with curl or an
71 alternative URL, "https://git.io/cpanm"
72
74 perl 5.8.1 or later.
75
76 • 'tar' executable (bsdtar or GNU tar version 1.22 are recommended)
77 or Archive::Tar to unpack files.
78
79 • C compiler, if you want to build XS modules.
80
81 • make
82
83 • Module::Build (core in 5.10)
84
86 How does cpanm get/parse/update the CPAN index?
87 It queries the CPAN Meta DB site at <http://cpanmetadb.plackperl.org/>.
88 The site is updated at least every hour to reflect the latest changes
89 from fast syncing mirrors. The script then also falls back to query the
90 module at <http://metacpan.org/> using its search API.
91
92 Upon calling these API hosts, cpanm (1.6004 or later) will send the
93 local perl versions to the server in User-Agent string by default. You
94 can turn it off with "--no-report-perl-version" option. Read more about
95 the option with cpanm, and read more about the privacy policy about
96 this data collection at <http://cpanmetadb.plackperl.org/#privacy>
97
98 Fetched files are unpacked in "~/.cpanm" and automatically cleaned up
99 periodically. You can configure the location of this with the
100 "PERL_CPANM_HOME" environment variable.
101
102 Where does this install modules to? Do I need root access?
103 It installs to wherever ExtUtils::MakeMaker and Module::Build are
104 configured to (via "PERL_MM_OPT" and "PERL_MB_OPT").
105
106 By default, it installs to the site_perl directory that belongs to your
107 perl. You can see the locations for that by running "perl -V" and it
108 will be likely something under "/opt/local/perl/..." if you're using
109 system perl, or under your home directory if you have built perl
110 yourself using perlbrew or plenv.
111
112 If you've already configured local::lib on your shell, cpanm respects
113 that settings and modules will be installed to your local perl5
114 directory.
115
116 At a boot time, cpanminus checks whether you have already configured
117 local::lib, or have a permission to install modules to the site_perl
118 directory. If neither, i.e. you're using system perl and do not run
119 cpanm as a root, it automatically sets up local::lib compatible
120 installation path in a "perl5" directory under your home directory.
121
122 To avoid this, run "cpanm" either as a root user, with "--sudo" option,
123 or with "--local-lib" option.
124
125 cpanminus can't install the module XYZ. Is it a bug?
126 It is more likely a problem with the distribution itself. cpanminus
127 doesn't support or may have issues with distributions such as follows:
128
129 • Tests that require input from STDIN.
130
131 • Build.PL or Makefile.PL that prompts for input even when
132 "PERL_MM_USE_DEFAULT" is enabled.
133
134 • Modules that have invalid numeric values as VERSION (such as
135 "1.1a")
136
137 These failures can be reported back to the author of the module so that
138 they can fix it accordingly, rather than to cpanminus.
139
140 Does cpanm support the feature XYZ of CPAN and CPANPLUS?
141 Most likely not. Here are the things that cpanm doesn't do by itself.
142
143 If you need these features, use CPAN, CPANPLUS or the standalone tools
144 that are mentioned.
145
146 • CPAN testers reporting. See App::cpanminus::reporter
147
148 • Building RPM packages from CPAN modules
149
150 • Listing the outdated modules that needs upgrading. See
151 App::cpanoutdated
152
153 • Showing the changes of the modules you're about to upgrade. See
154 cpan-listchanges
155
156 • Patching CPAN modules with distroprefs.
157
158 See cpanm or "cpanm -h" to see what cpanminus can do :)
159
161 Copyright 2010- Tatsuhiko Miyagawa
162
163 The standalone executable contains the following modules embedded.
164
165 CPAN::DistnameInfo Copyright 2003 Graham Barr
166 local::lib Copyright 2007-2009 Matt S Trout
167 HTTP::Tiny Copyright 2011 Christian Hansen
168 Module::Metadata Copyright 2001-2006 Ken Williams. 2010 Matt S Trout
169 version Copyright 2004-2010 John Peacock
170 JSON::PP Copyright 2007-2011 by Makamaka Hannyaharamitu
171 CPAN::Meta, CPAN::Meta::Requirements Copyright (c) 2010 by David Golden
172 and Ricardo Signes
173 CPAN::Meta::YAML Copyright 2010 Adam Kennedy
174 CPAN::Meta::Check Copyright (c) 2012 by Leon Timmermans
175 File::pushd Copyright 2012 David Golden
176 parent Copyright (c) 2007-10 Max Maischein
177 Parse::PMFile Copyright 1995 - 2013 by Andreas Koenig, Copyright 2013
178 by Kenichi Ishigaki
179 String::ShellQuote by Roderick Schertler
180
182 This software is licensed under the same terms as Perl.
183
185 CONTRIBUTORS
186 Patches and code improvements were contributed by:
187
188 Goro Fuji, Kazuhiro Osawa, Tokuhiro Matsuno, Kenichi Ishigaki, Ian
189 Wells, Pedro Melo, Masayoshi Sekimura, Matt S Trout (mst), squeeky,
190 horus and Ingy dot Net.
191
192 ACKNOWLEDGEMENTS
193 Bug reports, suggestions and feedbacks were sent by, or general
194 acknowledgement goes to:
195
196 Jesse Vincent, David Golden, Andreas Koenig, Jos Boumans, Chris
197 Williams, Adam Kennedy, Audrey Tang, J. Shirley, Chris Prather, Jesse
198 Luehrs, Marcus Ramberg, Shawn M Moore, chocolateboy, Chirs Nehren,
199 Jonathan Rockway, Leon Brocard, Simon Elliott, Ricardo Signes, AEvar
200 Arnfjord Bjarmason, Eric Wilhelm, Florian Ragwitz and xaicron.
201
203 <http://github.com/miyagawa/cpanminus> - source code repository, issue
204 tracker
205 <irc://irc.perl.org/#cpanm> - discussions about cpanm and its related
206 tools
207
209 This software is provided "as-is," without any express or implied
210 warranty. In no event shall the author be held liable for any damages
211 arising from the use of the software.
212
214 CPAN CPANPLUS pip
215
216
217
218perl v5.34.0 2021-07-22 App::cpanminus(3)