CPAN vs. APT: conflitti nelle versioni?


9

Non riesco a trovare la risposta a questo da nessuna parte: un modulo installato tramite APT è in conflitto con uno installato tramite CPAN?

Insieme a questa domanda ci sono: dove vivono i moduli CPAN installati? Sono accessibili a livello globale o solo all'utente di installazione? Come fai a sapere quale? Come fai a sapere cosa è installato e quale ha la precedenza?

CPAN dovrebbe essere utilizzato anche quando i moduli sono installati tramite APT?

Risposte:


8

Su Debian e Ubuntu CPAN ( /usr/bin/cpanutility) installa i moduli /usr/local/lib/per impostazione predefinita. E i pacchetti debian mantengono i loro file in /usr/share/perl5/e /usr/lib/perl5/. Quindi i file installati tramite /usr/bin/cpannon sovrascriveranno i file installati tramite apt.

Non c'è niente di sbagliato nell'utilizzo di system perl, e il mix di codice apt e cpan generalmente funzionerà.

Puoi anche scegliere di impacchettare manualmente qualsiasi distribuzione cpan non disponibile nei tuoi repository apt. È facile con l'aiuto dello strumento dh-make-perl:

dh-make-perl --cpan Some::Module && cd Some-Module* && sudo debi

La posizione in cui cpanfiniscono i moduli installati è determinata dai PERL Config.pm. Sul mio Ubuntu 11.04, lo è /usr/local/share/perl/5.10.1.
Riccardo Murri,

Penso che sia /usr/local/shareper moduli pure-perl e /usr/local/libper roba xs.
berekuk,

6

Uso perlbrew . Installa una versione locale di Perl e cpan. Tutto ciò che fa viene fatto nella tua home directory. È semplice da installare e utilizzare e puoi installare l'ultima versione di Perl.


2
Va bene anche se vuoi discostarti dal sistema perl.
szabgab,

4

Quando installo direttamente da CPAN, consiglierei di usare local :: lib in una directory privata per te. Vedi la tecnica del boostrapping https://metacpan.org/module/local::lib

In questo modo il modulo CPAN installato verrà utilizzato solo dall'utente e avrà una separazione molto chiara dai moduli installati tramite APT.

Semplifica anche la rimozione dei moduli installati da CPAN in caso di problemi o durante l'aggiornamento di Ubuntu.

È così che lo uso su Ubuntu.


1

Puoi usare entrambi ma saranno in conflitto. Sono scritti nello stesso posto, quindi se si installa qualcosa da apt e quindi si installa una versione successiva da cpan, è possibile esplodere le cose.

Non faccio molto Perl ma in Python ho certamente il dilemma di cui stai parlando: apt-vs-PyPI. Personalmente scelgo apt ogni volta che posso. Significa che dovrei ottenere aggiornamenti senza dover ricordare di mantenere ogni singolo pacchetto Python. Non solo, ma significa che tutti i miei sistemi dovrebbero essere in esecuzione sulla stessa versione di quei pacchetti.

Non sempre funziona. A volte non hai abbastanza cose nuove nei repository o qualcosa di cui hai bisogno non è semplicemente impacchettato. In nessun caso è perfetto, ma credo che sia più perfetto. Basta essere consapevoli di quello che stai facendo e dovresti stare bene.


Modifica - Quasi dimenticato, c'è un modo migliore di suddividere le cose in modo che il sistema possa avere il suo ambiente e tutto ciò che stai sviluppando può vivere nel suo ambiente (che gestisci completamente con CPAN), come Python virtualenv...

/programming/1423879/how-can-i-install-specialized-environments-for-different-perl-applications


Speravo che CPAN si installasse in alcuni Siteo sitedirectory - o che almeno tu potessi forzarlo.
Mei,

3
Nota: su Ubuntu, i cpanmoduli installati finiscono in / usr / local / share / perl (o la posizione specificata da PERL Config.pm), mentre i pacchetti APT finiscono in / usr / share / perl5 secondo la politica Debian. Quindi non sono in conflitto ed è sicuro mescolare e abbinare le installazioni CPAN e APT, come dicono le altre risposte. (Python non è una buona analogia qui: l'imballaggio PERL e la gestione dei moduli sono molto diversi e -IMHO- superiori a quelli di Python.)
Riccardo Murri,

@Riccardo: assolutamente giusto. Lo stesso vale per Red Hat, anche se in una posizione diversa.
Mei,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.