CPAN vs. APT: Conflits dans les versions?


9

Je ne trouve nulle part la réponse à cette question: un module installé via APT est-il en conflit avec un module installé via CPAN?

Parallèlement à cette question, voici: Où vivent les modules CPAN installés? Sont-ils accessibles globalement ou uniquement à l'utilisateur installateur? Comment savez-vous lequel? Comment savez-vous ce qui est installé et ce qui est prioritaire?

Le CPAN doit-il même être utilisé lorsque les modules sont installés via APT?

Réponses:


8

Sur Debian et Ubuntu, CPAN ( /usr/bin/cpanutilitaire) installe les modules /usr/local/lib/par défaut. Et les paquets Debian conservent leurs fichiers dans /usr/share/perl5/et /usr/lib/perl5/. Les fichiers installés via /usr/bin/cpann'écraseront donc pas les fichiers installés via apt.

Il n'y a rien de mal à utiliser le système Perl, et le mélange de code apt et cpan fonctionnera généralement.

Vous pouvez également choisir de conditionner manuellement toute distribution cpan non disponible dans vos référentiels apt. C'est facile avec l'aide de l'outil dh-make-perl:

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

L'endroit où les cpanmodules installés finissent est déterminé par PERL Config.pm. Sur mon Ubuntu 11.04, ça l'est /usr/local/share/perl/5.10.1.
Riccardo Murri

Je pense que c'est /usr/local/sharepour les modules pur-perl et /usr/local/libpour les trucs xs.
berekuk

6

J'utilise perlbrew . Il installe une version locale de Perl et cpan. Tout ce qu'il fait est fait dans votre répertoire personnel. Son installation et son utilisation sont simples et vous pouvez installer la dernière version de Perl.


2
C'est aussi bien si vous voulez vous écarter du système perl.
szabgab

4

Lors de l'installation à partir de CPAN directement, je recommanderais d'utiliser local :: lib dans un répertoire privé. Voir la technique de boostrapping https://metacpan.org/module/local::lib

De cette façon, le module installé CPAN ne sera utilisé que par votre utilisateur et il aura une séparation très nette des modules installés à l'aide d'APT.

Cela vous permettra également de vous débarrasser facilement des modules installés par CPAN si vous rencontrez un problème ou lorsque vous mettez à niveau Ubuntu.

C'est comme ça que je l'utilise sur Ubuntu.


1

Vous pouvez utiliser les deux mais ils entreront en conflit. Ils sont écrits au même endroit, donc si vous installez quelque chose à partir d'apt, puis installez une version ultérieure à partir de cpan, vous pouvez créer des problèmes.

Je ne fais pas beaucoup de Perl mais en Python, j'ai certainement le dilemme dont vous parlez: apt-vs-PyPI. J'opte personnellement pour apt dès que je le peux. Cela signifie que je devrais obtenir des mises à jour sans avoir à me rappeler de maintenir chaque package Python individuel. Non seulement cela, mais cela signifie que tous mes systèmes devraient fonctionner sur la même version de ces packages.

Ça ne marche pas toujours. Parfois, vous n'avez pas assez de nouvelles choses dans les dépôts ou quelque chose dont vous avez besoin n'est tout simplement pas emballé. Ni l'une ni l'autre manière n'est parfaite mais je crois susceptible d'être plus parfaite. Soyez juste conscient de ce que vous faites et tout devrait bien se passer.


Edit - Presque oublié, il y a une meilleure façon de séparer les choses afin que le système puisse avoir son propre environnement et tout ce que vous développez peut vivre dans son propre environnement (que vous gérez complètement avec CPAN), comme Python virtualenv...

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


J'espérais que CPAN installerait à certains Siteou siterépertoire - ou au moins vous pouvez forcer.
Mei

3
Remarque: sur Ubuntu, les cpanmodules installés finissent dans / usr / local / share / perl (ou l'emplacement spécifié par PERL Config.pm), tandis que les paquets APT finissent dans / usr / share / perl5 selon la politique Debian. Ils ne sont donc pas en conflit et il est sûr de mélanger et de faire correspondre les installations CPAN et APT, comme le disent les autres réponses. (Python n'est pas une bonne analogie ici: l'emballage PERL et la gestion des modules sont très différents et -IMHO- supérieurs à ceux de Python.)
Riccardo Murri

@ Riccardo: tout à fait raison. Il en va de même pour Red Hat, mais à un endroit différent.
Mei
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.