Quelle est la meilleure façon d'installer un module Perl manquant?

je reçois cette erreur:

Can't locate Foo.pm in @INC

y a-t-il un moyen plus simple de l'installer que le téléchargement, le démontage, la fabrication, etc.?

144
demandé sur dreeves 2008-09-15 23:16:07

23 réponses

À La Unix :

vous commencez habituellement cpan dans votre coquille:

# cpan

et type

install Chocolate::Belgian

ou en abrégé:

cpan Chocolate::Belgian

À La Windows :

si vous utilisez ActivePerl sur Windows, le PPM (Perl Package Manager) a la même fonctionnalité que CPAN.pm.

exemple:

# ppm

ppm> search net-smtp

ppm> install Net-SMTP-Multipart

voir comment installer les modules Perl? dans le CPAN FAQ

de nombreuses distributions envoient beaucoup de modules perl comme les paquets.

  • Gentoo: category dev-perl
  • Debian: apt-cache search 'perl$'

Vous devriez toujours les préfère que vous bénéficiez d'automatique (sécurité) mises à jour et la facilité de l'enlèvement . Cela peut être assez délicat avec l'outil cpan lui-même.

pour Gentoo il y a un bel outil appelé g-cpan qui construit/installe le module à partir de CPAN et crée un paquet Gentoo ( ebuild ) pour vous.

180
répondu Benedikt Waldvogel 2008-10-09 21:46:32

Try App:: cpanminus :

# cpanm Chocolate::Belgian

c'est génial pour juste obtenir des trucs installés. Il ne fournit aucune des fonctionnalités les plus complexes de CPAN ou CPANPLUS, donc il est facile à utiliser, à condition que vous sachiez quel module vous voulez installer. Si vous n'avez pas déjà cpanminus, tapez juste:

# cpan App::cpanminus

pour l'installer.

il est également possible de l'installer sans utiliser cpan. Base la procédure de bootstrap est,

curl -L http://cpanmin.us | perl - --sudo App::cpanminus

pour plus d'informations, rendez-vous sur la page App::cpanminus et consultez la section installation.

55
répondu Philip Potter 2012-02-14 10:53:49

je note que des gens ont suggéré un passage en cpan sous sudo. Cela était nécessaire pour installer dans le répertoire système, mais les versions modernes du shell CPAN vous permettent de le configurer pour utiliser sudo juste pour l'installation. C'est beaucoup plus sûr, car cela signifie que les tests ne fonctionnent pas en tant que root.

si vous avez un vieux shell CPAN, installez simplement le nouveau cpan ("install CPAN") et lorsque vous rechargez le shell, il devrait vous demander de configurer ces nouveaux directive.

de nos jours, quand je suis sur un système avec un vieux CPAN, la première chose que je fais est de mettre à jour le shell et de le configurer pour le faire afin que je puisse faire la plupart de mon travail de cpan comme un utilisateur normal.

aussi, je suggère fortement que les utilisateurs de Windows enquêtent sur Perl fraise . Il s'agit d'une version de Perl qui est livrée avec un shell CPAN préconfiguré ainsi qu'un compilateur. Il comprend également certains modules Perl difficiles à compiler avec leur dépendances externes de bibliothèque C, notamment XML:: Parser. Cela signifie que vous pouvez faire la même chose que tous les autres utilisateurs de Perl quand il s'agit d'installer des modules, et les choses ont tendance à "juste travailler" beaucoup plus souvent.

27
répondu Dave Rolsky 2008-11-08 16:59:27

si vous êtes sur Ubuntu et que vous voulez installer le module perl préemballé (par exemple, geo::ipfree) essayez ceci:

    $ apt-cache search perl geo::ipfree
    libgeo-ipfree-perl - A look up country of ip address Perl module

    $ sudo apt-get install libgeo-ipfree-perl
20
répondu Otto 2008-09-16 15:21:21

quelques personnes ont mentionné l'utilité de cpan, mais c'est plus que juste démarrer un shell. Donnez-lui juste les modules que vous voulez installer et laissez-le faire.

$prompt> cpan Foo::Bar

si vous ne lui donnez aucun argument, il démarre le CPAN.Premier ministre shell. Cela fonctionne sur Unix, Mac, et devrait être très bien sur Windows (en particulier Strawberry Perl).

Il y a plusieurs autres choses que vous pouvez faire avec le cpan. Voici un résumé de l' les caractéristiques actuelles (qui pourraient être plus récentes que celle fournie avec CPAN.pm et perl):

-a
Creates the CPAN.pm autobundle with CPAN::Shell->autobundle.

-A module [ module ... ]
Shows the primary maintainers for the specified modules

-C module [ module ... ]
Show the Changes files for the specified modules

-D module [ module ... ]
Show the module details. This prints one line for each out-of-date module (meaning,
modules locally installed but have newer versions on CPAN). Each line has three columns:
module name, local version, and CPAN version.

-L author [ author ... ]
List the modules by the specified authors.

-h
Prints a help message.

-O
Show the out-of-date modules.

-r
Recompiles dynamically loaded modules with CPAN::Shell->recompile.

-v
Print the script version and CPAN.pm version.
13
répondu brian d foy 2018-06-11 18:37:54

sudo perl -MCPAN -e 'install Foo'

9
répondu dreeves 2008-09-15 19:17:11

voir Aussi Oui, même vous pouvez utiliser CPAN . Il montre comment vous pouvez utiliser CPAN sans avoir accès à root ou sudo.

9
répondu Corion 2008-09-16 09:15:00

Otto fait une bonne suggestion . Cela fonctionne pour Debian, ainsi que tout autre dérivé de Debian. La pièce manquante est ce qu'il faut faire lorsque apt-cache search ne trouve rien.

$ sudo apt-get install dh-make-perl build-essential apt-file
$ sudo apt-file update

ensuite, chaque fois que vous avez un module aléatoire que vous souhaitez installer:

$ cd ~/some/path
$ dh-make-perl --build --cpan Some::Random::Module
$ sudo dpkg -i libsome-random-module-perl-0.01-1_i386.deb

Cela vous donnera un paquet deb que vous pouvez installer pour obtenir Certains::Random::Module. Un des grands avantages ici est pages de manuel et de l'échantillon les scripts en plus du module lui-même seront placés dans l'emplacement de choix de votre distro. Si le distro sort un jour avec un paquet officiel pour une nouvelle version de certains modules::Random::, il sera automatiquement installé lorsque vous obtiendrez la mise à jour apt-get.

7
répondu mikegrb 2017-05-23 12:34:45

déjà répondu et accepté la réponse - mais de toute façon:

IMHO la façon la plus facile d'installer des modules CPAN (sur des systèmes unix, et n'ont aucune idée des wondows) est:

curl -L http://cpanmin.us | perl - --sudo App::cpanminus

ce qui précède installe le" Zero configuration CPAN modules installer "appelé cpanm . (Peut prendre plusieurs minutes pour l'installer - ne pas casser le processus)

et après-simplement:

cpanm Foo
cpanm Module::One
cpanm Another::Module
6
répondu jm666 2011-05-22 18:19:38

il arrive souvent que la commande CPAN install échoue avec le message comme "make test était retourné mauvais état, ne s'installe pas sans force"

dans ce cas, voici la façon d'installer le module:

perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
4
répondu jaxbihani 2012-11-10 02:44:10

beaucoup de recommandations pour CPAN.pm , ce qui est génial, mais si vous utilisez Perl 5.10 alors vous avez aussi accès à CPANPLUS.pm qui est comme CPAN.pm mais mieux.

et, bien sûr, il est disponible sur CPAN pour les personnes qui utilisent encore les anciennes versions de Perl. Pourquoi ne pas essayer:

$ cpan CPANPLUS
4
répondu Dave Cross 2015-04-13 15:15:07

2 chemins que je connais:

UTILISANT PPM:

avec Windows (ActivePerl) j'ai utilisé ppm

du type de ligne de commande ppm. Au ppm invite ...

ppm> install foo

ou

ppm> search foo

pour obtenir une liste des modules foo disponibles. Tapez help pour toutes les commandes

UTILISANT CPAN:

vous pouvez également utiliser CPAN comme ceci ( les systèmes *nix, ) :

perl -MCPAN -e 'shell'

vous obtient un prompt

cpan>

à l'instant ...

cpan> install foo  (again to install the foo module)

tapez h pour obtenir une liste de commandes pour cpan

3
répondu JWHEAT 2008-09-15 19:27:42

sur Fedora vous pouvez utiliser

# yum install foo

aussi longtemps que Fedora dispose d'un paquet existant pour le module.

3
répondu Bruce Alderman 2008-11-21 19:59:27

même ça devrait marcher:

cpan -i module_name
3
répondu serenesat 2015-04-13 14:52:47

utilisez la commande cpan comme cpan Modulename

$ cpan HTML::Parser

pour installer des dépendances suivez automatiquement les instructions ci-dessous ""

$ perl -MCPAN -e shell
cpan[1]>  o conf prerequisites_policy follow
cpan[2]>  o conf commit
exit

je préfère App::cpanminus , il installe des dépendances automatiquement. Il suffit de faire

$ cpanm HTML::Parser
3
répondu Chankey Pathak 2015-04-13 16:43:20

sur ubuntu la plupart des modules perl sont déjà empaquetés, de sorte que l'installation est beaucoup plus rapide que la plupart des autres systèmes qui doivent compiler.

pour installer Foo::Bar à une invite commmand par exemple habituellement vous faites juste:

sudo apt-get install libfoo-bar-perl

malheureusement, tous les modules ne suivent pas cette convention de nommage.

2
répondu Myforwik 2015-04-13 14:50:02

Sur Fedora Linux ou Enterprise Linux , yum assure également le suivi de perl dépendances de la bibliothèque. Donc, si le module perl est disponible, et qu'un paquet rpm exporte cette dépendance, il installera le bon paquet pour vous.

yum install 'perl(Chocolate::Belgian)'

(le plus probable perl-Chocolat Belge-paquet, ou même ChocolateFactory package)

2
répondu Michal Ingeli 2015-04-13 14:51:41

la façon la plus facile pour moi est celle-ci:

PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install DateTime::TimeZone'

a )détection/résolution/installation automatique de dépendances de type récursif

b) c'est un shell onliner, bon pour setup-scripts

2
répondu Mister X 2016-12-28 11:16:18

sur Windows avec la distribution ActiveState de Perl, utilisez la commande ppm .

1
répondu PW. 2008-10-08 07:27:00

si vous voulez mettre le nouveau module dans un emplacement personnalisé que votre shell cpan n'est pas configuré pour utiliser, alors peut-être, ce qui suit sera pratique.

 #wget <URL to the module.tgz>
 ##unpack
 perl Build.PL
./Build destdir=$HOME install_base=$HOME
./Build destdir=$HOME install_base=$HOME install
1
répondu venkrao 2013-09-11 18:06:06

parfois, vous pouvez utiliser le yum search foo pour rechercher le module perl relatif, puis utiliser yum install xxx pour installer.

1
répondu Chris Forever 2015-04-13 14:50:50

Semble que vous avez déjà votre réponse, mais j'ai pensé carillon. C'est ce que je fais dans certains scripts sur un serveur Ubuntu (ou debian)

#!/usr/bin/perl

use warnings;
use strict;

#I've gotten into the habit of setting this on all my scripts, prevents weird path issues if the script is not being run by root
$ENV{'PATH'} = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin';

#Fill this with the perl modules required for your project
my @perl = qw(LWP::Simple XML::LibXML MIME::Lite DBI DateTime Config::Tiny Proc::ProcessTable);

chomp(my $curl = `which curl`);

if(!$curl){ system('apt-get install curl -y > /dev/null'); }

chomp(my $cpanm = system('/bin/bash', '-c', 'which cpanm &>/dev/null'));

#installs cpanm if missing
if($cpanm){ system('curl -s -L http://cpanmin.us | perl - --sudo App::cpanminus'); }

#loops through required modules and installs them if missing
foreach my $x (@perl){
    eval "use $x";
    if($@){
        system("cpanm $x");
        eval "use $x";
    }
}

cela fonctionne bien pour moi, peut-être qu'il y a quelque chose ici que vous pouvez utiliser.

0
répondu Ed Dunn 2016-11-04 15:26:15

simplement exécuter cpan Foo::Bar sur shell servirait le but.

-1
répondu Kamal Nayan 2015-10-01 09:56:36