如何为单个安装设置库并包含Makefile.PL的路径?

时间:2010-09-29 22:47:03

标签: perl cpan

如何告诉CPAN在一个特定安装中给出Makefile.PL一个特定参数?

具体而言。我想安装XML::LibXMLapt-get已将库安装到/usr/lib/libxml2.so.2.6.32Makefile.PL有问题并告诉我:

using fallback values for LIBS and INC
options:
  LIBS='-L/usr/local/lib -L/usr/lib -lxml2 -lm'
  INC='-I/usr/local/include -I/usr/include'
If this is wrong, Re-run as:
  $ /usr/bin/perl Makefile.PL LIBS='-L/path/to/lib' INC='-I/path/to/include'

looking for -lxml2... no
looking for -llibxml2... no
libxml2 not found
Try setting LIBS and INC values on the command line
Or get libxml2 from 
  http://xmlsoft.org/

我知道libxml2在哪里,但我不知道如何告诉Makefile.PL

编辑:当我dpkg -L libxml2(这是一个debian)时,我看到了

/.
/usr
/usr/lib
/usr/lib/libxml2.so.2.6.32
/usr/share
/usr/share/doc
/usr/share/doc/libxml2
/usr/share/doc/libxml2/AUTHORS
/usr/share/doc/libxml2/changelog.Debian.gz
/usr/share/doc/libxml2/copyright
/usr/share/doc/libxml2/README
/usr/share/doc/libxml2/README.Debian
/usr/share/doc/libxml2/NEWS.gz
/usr/share/doc/libxml2/changelog.gz
/usr/share/doc/libxml2/TODO.gz
/usr/lib/libxml2.so.2

我不是该机器上的root用户,我无法在/usr/lib中创建符号链接或修复它。

2 个答案:

答案 0 :(得分:13)

在CPAN shell中,您可以设置所需的值:

$ cpan
cpan shell -- CPAN exploration and modules installation (v1.9205)
ReadLine support available (maybe install Bundle::CPAN or Bundle::CPANxxl?)

cpan[1]> o conf makepl_arg
    makepl_arg         []
Type 'o conf' to view all configuration items


cpan[2]> o conf makepl_arg "LIBS=-L/foo/bar INC=-I/foo/bar/include"
    makepl_arg         [LIBS=-L/foo/bar INC=-I/foo/bar/include]
Please use 'o conf commit' to make the config permanent!

cpan[3]> install Some::Module

使用cpan命令,您可以使用-j开关加载自定义配置文件。您可以从-J开关开始转储配置,然后更改所需的值并重新加载它:

 $ cpan -J > my_config.pm
 .... edit file ....
 $ cpan -j my_config.pm -i Some::Module

但是,我怀疑是rafl's suspicions are right

答案 1 :(得分:3)

Makefile.PL正在寻找libxml2.so。这通常是实际libxml2共享对象的符号链接,如libxml2.so.2.6.32。如果由于某种原因这个符号链接因为你删除了它,你的供应商没有发布它的libxml2头文件包(例如Debian / Ubuntu / etc上的libxml2-dev),你需要自己创建它。

您不需要在此处将任何特定参数传递给Makefile.PL。它已经在正确的位置寻找。它正在寻找的东西不存在。