如何告诉CPAN在一个特定安装中给出Makefile.PL
一个特定参数?
具体而言。我想安装XML::LibXML
,apt-get
已将库安装到/usr/lib/libxml2.so.2.6.32
。 Makefile.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
中创建符号链接或修复它。
答案 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。它已经在正确的位置寻找。它正在寻找的东西不存在。