2010-09-29 7 views
8

¿Cómo puedo decirle a CPAN que proporcione Makefile.PL un argumento específico en una instalación específica?¿Cómo puedo configurar la biblioteca e incluir rutas para Makefile.PL para una sola instalación?

Específicamente. Quiero instalar XML::LibXML, y apt-get instalé la biblioteca en /usr/lib/libxml2.so.2.6.32. Makefile.PL tiene problemas con eso y me dice:

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/ 

sé dónde está el libxml2 es, pero no sé cómo decirle a la Makefile.PL.

edición: Cuando hago dpkg -L libxml2 (es un debian), veo

/. 
/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 

no soy una raíz en esa máquina y no puedo hacer un enlace simbólico en /usr/lib o repararlo.

+1

Entonces, ¿cómo funcionó esto? ¿Has podido resolver tu problema? – rafl

+0

Sí, lo hice (lo siento por no responder, tuve otro trabajo), gracias! –

Respuesta

3

The Makefile.PL está buscando libxml2.so. Suele ser un enlace simbólico a su objeto compartido libxml2 real, como libxml2.so.2.6.32. Si por alguna razón este enlace simbólico no está presente porque lo eliminó, su proveedor no lo envió con su paquete de encabezado libxml2 (por ejemplo, libxml2-dev en Debian/Ubuntu/etc.), tendrá que crearlo usted mismo.

No necesita pasar ningún argumento específico a Makefile.PL aquí. Ya está buscando en los lugares correctos. Las cosas que está buscando simplemente no están allí.

+0

No soy una raíz en esa máquina (tengo CPAN configurado para instalar cosas en mi directorio personal). Cuando hago 'dpkg -L libxml2', veo dos cosas en'/usr/lib', y eso es '/ usr/lib/libxml2.so.2.6.32' y' /usr/lib/libxml2.so. 2'. Probablemente está mal instalado; sin embargo, no tengo forma de solucionarlo. –

+0

¿Está instalado 'libxml2-dev'? De lo contrario, no podrá compilar 'XML :: LibXML' contra libxml2 que haya instalado ya que le faltan tanto los archivos de encabezado requeridos como los enlaces simbólicos .so. Si no puede conseguir que el administrador del sistema instale ese paquete, le recomiendo que instale libxml2, incluidos sus encabezados, manualmente en algún directorio en el que tenga permisos de escritura y señale Makefile.PL, usando 'LIBS' y' INC 'opciones que ya te mostró en su salida. – rafl

+0

Oh. No es. ¿Ese es el problema? (Puedo hacer que el administrador lo instale, solo toma algunos días :)) –

12

En el shell de CPAN, puede establecer los valores que se precisan:

$ 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 

Con el comando CPAN, puede utilizar el interruptor -j para cargar un archivo de configuración personalizado. Puede comenzar con el interruptor -J para volcar la configuración, a continuación, cambie los valores que desee y vuelva a cargarlo:

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

Sin embargo, sospecho que rafl's suspicions are right.

Cuestiones relacionadas