2010-09-29 10 views
8

Come posso dire a CPAN di fornire un argomento specifico Makefile.PL in un'installazione specifica?Come posso impostare la libreria e includere i percorsi per Makefile.PL per una singola installazione?

In particolare. Voglio installare XML::LibXML e apt-get installato la libreria su /usr/lib/libxml2.so.2.6.32. Makefile.PL ha problemi con questo e mi 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/ 

so dove l'libxml2 è, ma non so come dire al Makefile.PL.

edit: Quando faccio dpkg -L libxml2 (è una debian), vedo

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

io non sono una radice su quella macchina e non posso fare link simbolico in /usr/lib o riparare.

+1

Quindi come ha funzionato? Sei stato in grado di risolvere il tuo problema? – rafl

+0

Sì, l'ho fatto (mi dispiace per non aver risposto, ho avuto qualche altro lavoro), grazie! –

risposta

3

Il file Makefile.PL sta cercando libxml2.so. Di solito è un collegamento simbolico al tuo oggetto condiviso libxml2, come libxml2.so.2.6.32. Se per qualche motivo questo link simbolico non è presente perché lo hai eliminato, il tuo fornitore non lo ha spedito con il suo pacchetto di intestazione libxml2 (ad esempio libxml2-dev su Debian/Ubuntu/etc), dovrai crearlo da solo.

Non è necessario passare alcun argomento specifico a Makefile.PL qui. Sta già cercando nei posti giusti. Le cose che sta cercando semplicemente non ci sono.

+0

Non sono una root su quella macchina (ho CPAN configurato per installare roba nella mia home directory). Quando eseguo 'dpkg -L libxml2', vedo due cose in/usr/lib', che è'/usr/lib/libxml2.so.2.6.32' e '/usr/lib/libxml2.so. 2'. Probabilmente è installato male; tuttavia, non ho modo di risolverlo. –

+0

È installato 'libxml2-dev'? In caso contrario, non sarà possibile creare 'XML :: LibXML' contro il libxml2 che si è installato poiché mancano sia i file di intestazione richiesti che i collegamenti simbolici .so. Se non è possibile ottenere l'amministratore di sistema per installare il pacchetto, si consiglia di installare libxml2, incluse le intestazioni, manualmente in alcune directory in cui si dispone delle autorizzazioni di scrittura e puntando su Makefile.PL, utilizzando 'LIBS' e' INC 'opzioni che ti ha già mostrato nel suo output. – rafl

+0

Oh. Non è. È questo il problema? (Posso fare l'amministratore per installarlo, ci vogliono solo pochi giorni :)) –

12

Nella shell CPAN, è possibile impostare i valori di cui avete bisogno:

$ 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 il comando CPAN, è possibile utilizzare l'interruttore -j per caricare un file di configurazione personalizzata. Si può iniziare con l'interruttore -J per scaricare la configurazione, quindi modificare i valori desiderati e ricaricarlo:

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

Tuttavia, ho il sospetto che rafl's suspicions are right.

Problemi correlati