[MacPorts] #43741: cpan fails to install any module
MacPorts
noreply at macports.org
Wed Jan 13 15:01:08 PST 2016
#43741: cpan fails to install any module
-----------------------------+--------------------------------
Reporter: me@… | Owner: macports-tickets@…
Type: defect | Status: new
Priority: Normal | Milestone:
Component: ports | Version:
Resolution: | Keywords:
Port: perl5 perl5.16 |
-----------------------------+--------------------------------
Comment (by devans@…):
Then you probably need to run cpan with sudo. The following works for me.
{{{
sudo port install perl5
}}}
which gives
{{{
$ which perl cpan
/opt/local/bin/perl
/opt/local/bin/cpan
$ perl -v
This is perl 5, version 22, subversion 1 (v5.22.1) built for darwin-
thread-multi-2level
...
$ cpan -v
/opt/local/bin/cpan script version 1.63, CPAN.pm version 2.11
}}}
so I won't bother with the 5.22 suffix stuff.
If I then run
{{{
sudo cpan
}}}
I can install whatever I like and it gets installed into the perl5.22 site
path
{{{
/opt/local/lib/perl5/site_perl/5.22
}}}
MacPorts modules install into the vendor path
{{{
/opt/local/lib/perl5/vendor_perl/5.22
}}}
and core modules are in the main path
{{{
/opt/local/lib/perl5/5.22
}}}
So CPAN, MacPorts and CPAN can all have the same module installed without
conflict
Looking at @INC
{{{
perl -e "print join(\"\n\", @INC), \"\n\""
/opt/local/lib/perl5/site_perl/5.22/darwin-thread-multi-2level
/opt/local/lib/perl5/site_perl/5.22
/opt/local/lib/perl5/vendor_perl/5.22/darwin-thread-multi-2level
/opt/local/lib/perl5/vendor_perl/5.22
/opt/local/lib/perl5/5.22/darwin-thread-multi-2level
/opt/local/lib/perl5/5.22
.
}}}
you can see, from the search order, that MacPort's vendor installed
modules will override core, but CPAN's site installed modules will
override MacPort's.
So if you have all three installed CPAN wins.
Using the very useful
[https://raw.githubusercontent.com/mklement0/whichpm/stable/bin/whichpm
whichpm script], if I install Net::FTP, which is a core module, using both
MacPorts and CPAN I see
{{{
$ whichpm Net::FTP
whichpm: WARNING: DUPLICATE module files found for 'Net::FTP':
/opt/local/lib/perl5/vendor_perl/5.22/Net/FTP.pm (from p5-net)
/opt/local/lib/perl5/5.22/Net/FTP.pm (from core)
/opt/local/lib/perl5/site_perl/5.22/Net/FTP.pm (from cpan)
}}}
the last one is the version that perl will load due to the @INC search
order.
--
Ticket URL: <https://trac.macports.org/ticket/43741#comment:10>
MacPorts <https://www.macports.org/>
Ports system for OS X
More information about the macports-tickets
mailing list