2010-08-15 8 views
6

Vorrei installare diverse versioni di perl nella mia home directory. Ho provato a utilizzare App::perlbrew, ma i moduli XS di una versione stavano causando segfaults nell'altra versione. C'è un modo per installare più versioni di perl e farle tenere automaticamente separati i loro moduli XS?In che modo è possibile installare più versioni di Perl senza inciamparvi nei rispettivi moduli XS?

+0

In realtà, ho appena ricordato che sto anche usando local :: lib. Forse non interagiscono bene. Proverò a disabilitarlo. –

+0

Hmm, sembra che local :: lib e perlbrew non giochino bene insieme. Questo sembra essere il mio problema. –

+0

possibile duplicato di [Come si gestiscono i moduli Perl quando si utilizza un gestore di pacchetti?] (Http://stackoverflow.com/questions/398221/how-do-you-manage-perl-modules-when-using-a-package -manager) – Ether

risposta

11

È possibile installare ciascun perl completamente separato da qualsiasi altra installazione di perl. I suoi binari e moduli saranno completamente separati l'uno dall'altro. In sostanza, quando si installa ogni Perl si dà un proprio prefisso:

$ ./Configure -des -Dprefix=/usr/local/perls/perl-5.12.1 

tutto è installato sotto quel prefisso, e tutti i programmi nella bin/ userà quel particolare perl. Approfondimento approfondito in Programmazione Perl efficace.

Da lì, faccio link simbolici nel mio ~/bin a ciascuno di questi programmi e fissare il numero di versione ad esso, quindi ho ~/perl5.12.1, perldoc5.12.1, e così via . Non devo mai scegliere di avere una versione nel modo in cui perlbrew ti vuole. Scrivo altro su questo nel numero Make links to per-version tools. nel blog Efficace Perler.

Potrebbe essere possibile utilizzare local :: lib per questo, ma è davvero progettato per lavorare con una versione di Perl e utilizzare una directory di libreria personale. Puoi dire di usare un'altra directory, ma a quel punto non ti sta risparmiando nulla nel modo tradizionale.

+0

Grazie per aver chiarito che local :: lib è solo per una versione singola. Ho disabilitato local :: lib e perlbrew sembra che stia andando bene da solo. –

+0

Penso che -Dprefix potrebbe non essere sufficiente; Ho finito con una installazione perl che ha messo tutte le sue librerie nel posto giusto, ma ha comunque usato/usr/local/bin per gli eseguibili. Non sono ancora tornato per vedere cosa è successo, quindi mi limito a menzionarlo come una nota a piè di pagina, facendo attenzione a quali configurazioni vengono generate via -es. – Ether

+0

Quindi, c'è un modo per local :: lib di funzionare correttamente con più versioni perl e moduli XS, o dovrei disabilitare e lasciare che perlbrew gestisca tutto? –

Problemi correlati