Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

perlbrew/cpanm on 64 bit Ubuntu

by emgrasso (Novice)
on Aug 04, 2013 at 01:41 UTC ( [id://1047752] : perlquestion . print w/replies, xml ) Need Help??

emgrasso has asked for the wisdom of the Perl Monks concerning the following question:

I am running on 64-bit Ubuntu 12.04 LTS.

I would like to set up some clean test environments in perlbrew, but I am finding that some modules will not build in cpanm or cpan because some key libraries like libm and libxml2 are located in /usr/lib/x86_64-linux-gnu and /usr/include/x86_64-linux-gnu/ instead of /usr/lib and /usr/include.

What is the best way to handle this?

Should I just install the 32bit libraries?

Is there a way to configure cpan and/or cpanm and/or Makefile.PL to search the 64bit paths as well as the 32bit paths?

Is there another option that I have not thought of?

(Are the packages that ubuntu has available for installation for things like XML::LibXML 32bit or 64bit? Is there an easy way to find out?)

Replies are listed 'Best First'.
Re: perlbrew/cpanm on 64 bit Ubuntu
by Anonymous Monk on Aug 04, 2013 at 02:12 UTC
      Add them WHERE in the config?

      I have installed the 32bit libraries and multilib compilers, and it turns out that neither the 32bit nor the 64bit libraries end up in the main /usr/lib directory that is mentioned in Makefile.PL.

      In the perlbrew environment, running
      cpanm XML::LibXML

      still reports:

      Configuring XML-LibXML-2.0019 ... N/A ! Configure failed for XML-LibXML-2.0019. See /home/emgrasso/.cpanm/wo +rk/1375587018.8608/build.log for details
      and /home/emgrasso/.cpanm/work/1375587018.8608/build.log says:
      running xml2-config...ok (2.7.8) Checking for ability to link against Checking for ability to link against libxml2...libxml2, zlib, and/or t +he Math library (-lm) have not been found. Try setting LIBS and INC values on the command line Or get libxml2 from If you install via RPMs, make sure you also install the -devel RPMs, as this is where the headers (.h files) are.
      I don't think it is talking about the cpanm command line.

      The perlbrew environments don't seem to contain any CPAN directories for config files where I could set o conf makepl_arg. (Does cpanm pay attention to those? If so, what format would I need to use so Makefile.PL would search the existing paths at well as the special 32 or 64 bit paths?)
        I don't think it is talking about the cpanm command line

        That's right - it's talking about the perl Makefile.PL command line .... which is the command you would run if you wanted to build XML::LibXML "manually".
        In that case you would cd to the top-level directory in the XML-LibXML source and run something like:
        perl Makefile.PL INC="-I/usr/include/x86_64-linux-gnu" LIBS="-L/usr/li +b/x86_64-linux-gnu -lxml2 -lz -lm"
        You would then follow that with make test then (assuming make test went satisfactorily) make install

        I don't know how you'd incorporate that command line requirement into the automated cpanm procedure. (I'd just do it "manually".)

        Alternatively, adding /usr/include/x86_64-linux-gnu to the CPATH environment variable and adding /usr/lib/x86_64-linux-gnu to the LIBRARY_PATH environment variable might also work - at least if you're using a gcc compiler:
        export CPATH=/usr/include/x86_64-linux-gnu:$CPATH export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH