Question

Je reçois cette erreur:

Impossible de localiser Foo.pm dans @INC

Existe-t-il un moyen plus facile de l'installer que le téléchargement, la suppression de fichiers, la création, etc.?

Était-ce utile?

La solution

Sous Unix :

généralement, vous démarrez cpan dans votre shell:

# cpan

et tapez

installer Chocolate :: Belgian

ou sous forme abrégée:

cpan Chocolate :: Belgian

Sous Windows :

  

Si vous utilisez ActivePerl sous Windows, le PPM (Perl Package Manager) a en grande partie les mêmes fonctionnalités que CPAN.pm.

Exemple:

# ppm
  ppm > recherche net-smtp
  ppm > installer Net-SMTP-Multipart

voir Comment installer des modules Perl? dans la FAQ CPAN

De nombreuses distributions livrent un grand nombre de modules Perl sous forme de packages.

  • Debian / Ubuntu: recherche apt-cache 'perl $'
  • Arch Linux: pacman -Ss '^ perl -'
  • Gentoo: catégorie dev-perl

Vous devriez toujours les préférer, car vous bénéficiez de mises à jour (de sécurité) automatiques et de la facilité de suppression . Cela peut être assez délicat avec l'outil cpan lui-même.

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

Autres conseils

Essayez App :: cpanminus :

# cpanm Chocolate::Belgian

C’est génial de simplement installer des éléments. Il ne fournit aucune des fonctionnalités les plus complexes de CPAN ou CPANPLUS. Il est donc facile à utiliser, à condition que vous sachiez quel module vous souhaitez installer. Si vous n'avez pas déjà cpanminus, tapez simplement:

# cpan App::cpanminus

pour l'installer.

Il est également possible de l’installer sans utiliser cpan. La procédure de démarrage de base est,

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

Pour plus d'informations, consultez la page App :: cpanminus et consultez la section relative à l'installation.

Je remarque que certaines personnes suggèrent de lancer cpan sous sudo. Auparavant, il était nécessaire de l'installer dans le répertoire système, mais les versions modernes du shell CPAN vous permettent de le configurer pour qu'il utilise sudo uniquement pour son installation. Ceci est beaucoup plus sûr, car cela signifie que les tests ne fonctionnent pas en tant que root.

Si vous avez un ancien shell CPAN, installez simplement le nouveau cpan ("install CPAN") et lorsque vous rechargez le shell, il devrait vous inviter à configurer ces nouvelles directives.

De nos jours, lorsque je suis sur un système avec un ancien CPAN, la première chose à faire est de mettre à jour le shell et de le configurer afin que je puisse faire la plupart de mes travaux sur cpan en tant qu'utilisateur normal.

Par ailleurs, je recommanderais vivement aux utilisateurs de Windows d’enquêter sur strawberry Perl . Il s'agit d'une version de Perl livrée avec un shell CPAN préconfiguré ainsi qu'un compilateur. Il inclut également des modules Perl difficiles à compiler avec leurs dépendances de bibliothèque C externes, notamment XML :: Parser. Cela signifie que vous pouvez faire la même chose que tous les autres utilisateurs de Perl en ce qui concerne l’installation de modules. beaucoup plus souvent.

Si vous êtes sur Ubuntu et que vous souhaitez 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

Quelques personnes ont mentionné l’utilitaire cpan, mais c’est plus qu’un simple démarrage d’un shell. Donnez-lui simplement les modules que vous souhaitez installer et laissez-le faire son travail.

$prompt> cpan Foo::Bar

Si vous ne lui donnez aucun argument, il lance le shell CPAN.pm. Cela fonctionne sous Unix, Mac, et devrait convenir sous Windows (notamment Strawberry Perl).

Il existe également plusieurs autres choses que vous pouvez faire avec l'outil cpan. Voici un résumé des fonctionnalités actuelles (qui pourraient être plus récentes que celles fournies 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.

sudo perl -MCPAN -e 'installer Foo'

Voir aussi Oui, même si vous pouvez utiliser le réseau CPAN . Il montre comment utiliser CPAN sans accès root ou sudo.

Otto a créé un bonne suggestion . Cela fonctionne aussi pour Debian, ainsi que pour tout autre dérivé de Debian. La pièce manquante est ce qu'il faut faire lorsque la recherche d'apt-cache ne trouve rien.

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

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

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

Ceci vous donnera un paquet deb que vous pouvez installer pour obtenir Some :: Random :: Module. Les pages de manuel constituent l’un des principaux avantages: des exemples de scripts, en plus du module lui-même, seront placés dans l’emplacement de votre choix. Si la distribution contient un paquet officiel pour une version plus récente de Some :: Random :: Module, elle sera automatiquement installée lors de la mise à jour d'apt-get.

Déjà répondu et accepté réponse - mais quand même:

À mon humble avis, la façon la plus simple d’installer des modules CPAN (sur des systèmes similaires à Unix et qui n’ont aucune idée de ce qu’ils font) est:

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

Ce qui précède est l’installation du "programme d’installation de modules CPAN à configuration zéro". appelé cpanm . (L'installation peut prendre plusieurs minutes. Ne pas interrompre le processus.

et après - simplement:

cpanm Foo
cpanm Module::One
cpanm Another::Module

Beaucoup de recommandations pour CPAN.pm , ce qui est très bien, mais si vous utilisez Perl 5.10 , vous avez également accès à CPANPLUS. pm qui ressemble à CPAN.pm mais en mieux.

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

$ cpan CPANPLUS

Il arrive souvent que la commande cpan install échoue avec le message suivant: "Le test a renvoyé un statut incorrect, ne s'installera pas sans force"

.

Dans ce cas, voici comment installer le module:

perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"

Sur Ubuntu, la plupart des modules Perl sont déjà fournis. L’installation est donc beaucoup plus rapide que la plupart des autres systèmes qui doivent compiler.

Pour installer Foo :: Bar à l'invite de commande, par exemple, il vous suffit généralement de:

sudo apt-get install libfoo-bar-perl

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

Même si cela devrait fonctionner:

cpan -i module_name

Utilisez la commande cpan en tant que cpan Modulename

$ cpan HTML::Parser

Pour installer automatiquement les dépendances, suivez 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 automatiquement les dépendances. Il suffit de faire

$ cpanm HTML::Parser

Deux façons que je connais:

UTILISATION DE PPM:

Avec Windows (ActivePerl), j'ai utilisé ppm

.

à partir du type de ligne de commande ppm. À l’invite ppm ...

ppm> install foo

ou

ppm> search foo

pour obtenir une liste des modules foo disponibles. Saisissez aide pour toutes les commandes

.

UTILISATION DU CPAN:

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

perl -MCPAN -e 'shell'

vous recevez une invite

cpan>

à l'invite ...

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

tapez h pour obtenir une liste de commandes pour cpan

Sur Fedora, vous pouvez utiliser

# yum install foo

tant que Fedora a un package existant pour le module.

Sous Fedora Linux ou Enterprise Linux , yum suit également les dépendances de la bibliothèque Perl. Ainsi, si le module perl est disponible et que certains paquetages rpm exportent cette dépendance, il installera le bon paquet pour vous.

yum install 'perl(Chocolate::Belgian)'

(paquet perl-chocolat-belge le plus probable, ou même paquet ChocolateFactory)

La façon la plus simple pour moi est la suivante:

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

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

b) c'est un shell en ligne, bon pour les scripts d'installation

Si vous souhaitez placer le nouveau module dans un emplacement personnalisé que votre shell cpan n'est pas configuré pour utiliser, les éléments suivants vous seront peut-être utiles.

 #wget <URL to the module.tgz>
 ##unpack
 perl Build.PL
./Build destdir=$HOME install_base=$HOME
./Build destdir=$HOME install_base=$HOME install

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

Sous Windows avec la distribution ActiveState de Perl, utilisez le ppm .

Exécuter simplement cpan Foo :: Bar sur le shell servirait cet objectif.

On dirait que vous avez déjà reçu votre réponse, mais je me suis dit que je devrais intervenir. C’est ce que je fais dans certains scripts sur Ubuntu (ou un serveur 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 ya quelque chose que vous pouvez utiliser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top