CPAN on OS X

CPAN, the Comprehensive Perl Archive Network is a free community provided library of Perl programs.

Installing CPAN

Here are instructions for upgrading 64-bit CPAN, tested April 2014 on 10.9.2 Mavericks, July 2015 on 10.10.4 Yosemite, and May 2016 on 10.11.5 El Capitan.

Prerequisites

Install Process

After checking my environment, I did sudo -H cpan. CPAN started and asked if I wanted it to set as many default options as possible. I said yes, and it appeared to work. Then CPAN asked if it should choose the best mirror sites for me. Say NO and set them yourself.. Executing r worked, and showed many modules out of date.

I was then able to install modules from the command line. I did install CPAN and reload cpan to upgrade CPAN to the latest version, and this worked.

Next I tried "install LWP" and this failed with the message "Can't locate object method 'requirements_for_module'". This was a symptom of not setting PERL5LIB. I fixed that and things worked... see below.

To install DBD::mysql, first start the MySQL server. If you have already set the root password for MySQL, do o conf makepl_arg "--testuser=root --testpass=xxxxxxxx", before doing install DBD::mysql.

Installing on OSX Snow Leopard and Mavericks

When I executed install DBD::mysql on Snow Leopard, the install failed, saying it could not find libmysqlclient.18.dylib. (This problem did not occur on Mountain Lion, but it did on Mavericks.) I Googled and found http://probably.co.uk/problems-installing-dbdmysql-on-os-x-snow-leopard.html . It suggested

 sudo install_name_tool -id /usr/local/mysql/lib/libmysqlclient.18.dylib\
   /usr/local/mysql/lib/libmysqlclient.18.dylib

When I re-tried install DBD::mysql, it succeeded. This problem did not occur on Yosemite and El Capitan.

Installing on Yosemite

Installing OSX 10.10.5 broke my Perl setup. I had set PERL5LIB to $HOME/bin:/opt/local/lib/perl5/site_perl/5.16.3, but 10.10.5 installed Perl 5.18 as the system Perl. Access to MySQL from Perl started failing, saying that the 5.16 library was incompatible with the 5.18 Perl loader. I set PERL5LIB to $HOME/bin:/Library/Perl/5.18/, trying to avoid using the MacPorts Perl, and made a symlink to the new system Perl in my /bin directory with ln -s /usr/local/bin/perl. Then I did sudo -H /usr/bin/cpan to install a bunch of stuff into the system Perl lib, such as DBI. CPAN still failed installing DBD::mysql, even after setting the CPAN config using o conf makepl_arg "--testuser=aaa --testpass=bbb". I searched the Web, which suggested sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib and this allowed me to install DBD::mysql and run Perl MySQL database accesses.

Installing on El Capitan

Macports installed Perl 5.22, newer than the system-provided 5.18. I set PERL5LIB to $HOME/bin:/opt/local/lib/perl5/site_perl/5.22 and replaced /usr/bin/perl with a symlink to /opt/local/bin/perl (because of the shebang line in perl files) (had to temporarily disable SIP).

(Gotcha) Perl 5.22 complains about some regular expressions that 5.18 accepted happily. I had to change /{{..../ to /\{\{..../ to put a backslash in front of open braces. This is backward compatible.

Home | FAQ © 2010-2017, Tom Van Vleck updated 2017-02-10 11:24