Domanda

Ottengo questo errore:

Can't locate Foo.pm in @INC

Esiste un modo più semplice per installarlo rispetto a scaricarlo, decomprimerlo, crearlo, ecc.?

È stato utile?

Soluzione

Su Unix:

di solito inizi tu cpan nel tuo guscio:

# cpan

e tipo

install Chocolate::Belgian

o in forma breve:

cpan Chocolate::Belgian

Su Windows:

Se utilizzi ActivePerl su Windows, il file PPM (Gestore pacchetti Perl) ha molte delle stesse funzionalità di CPAN.pm.

Esempio:

# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart

Vedere Come installo i moduli Perl? nelle domande frequenti sul CPAN

Molte distribuzioni forniscono molti moduli Perl come pacchetti.

  • Debian/Ubuntu: apt-cache search 'perl$'
  • ArcoLinux: pacman -Ss '^perl-'
  • Gentoo:categoria dev-perl

Dovresti Sempre preferiteli perché beneficiate dell'automatico (sicurezza) aggiornamenti e la facilità di rimozione.Questo può essere piuttosto complicato con cpan strumento stesso.

Per Gentoo c'è uno strumento carino chiamato g-cpan che compila/installa il modulo da CPAN e crea un pacchetto Gentoo (ebuild) per te.

Altri suggerimenti

Tentativo App::cpanminus:

# cpanm Chocolate::Belgian

È fantastico semplicemente per installare elementi.Non fornisce nessuna delle funzionalità più complesse di CPAN o CPANPLUS, quindi è facile da usare, a condizione che tu sappia quale modulo desideri installare.Se non hai già cpanminus, digita semplicemente:

# cpan App::cpanminus

per installarlo.

È anche possibile installarlo senza utilizzare cpan.La procedura di bootstrap di base è:

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

Per maggiori informazioni vai alla pagina App::cpanminus e guarda la sezione sull'installazione.

Noto che alcune persone suggeriscono di eseguire cpan sotto sudo.In passato era necessario installarlo nella directory di sistema, ma le versioni moderne della shell CPAN ti consentono di configurarlo per utilizzare sudo Appena per l'installazione.Questo è molto più sicuro, poiché significa che i test non vengono eseguiti come root.

Se hai una vecchia shell CPAN, installa semplicemente la nuova cpan ("installa CPAN") e quando ricarichi la shell, dovrebbe chiederti di configurare queste nuove direttive.

Al giorno d'oggi, quando utilizzo un sistema con un vecchio CPAN, la prima cosa che faccio è aggiornare la shell e configurarla per farlo in modo da poter svolgere la maggior parte del mio lavoro cpan come un normale utente.

Inoltre, suggerirei vivamente agli utenti Windows di indagare fragola Perl.Questa è una versione di Perl fornita con una shell CPAN preconfigurata e un compilatore.Include anche alcuni moduli Perl difficili da compilare con le loro dipendenze di librerie C esterne, in particolare XML::Parser.Ciò significa che potete fare la stessa cosa di ogni altro utente Perl quando si tratta di installare moduli, e le cose tendono a "funzionare" molto più spesso.

Se utilizzi Ubuntu e desideri installare il modulo perl preconfezionato (ad esempio, geo::ipfree) prova questo:

    $ 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

Un paio di persone hanno menzionato l'utilità cpan, ma è molto più che un semplice avvio di una shell.Basta dargli i moduli che vuoi installare e lasciarlo fare il suo lavoro.

$prompt> cpan Foo::Bar

Se non gli fornisci alcun argomento, avvia la shell CPAN.pm.Funziona su Unix, Mac e dovrebbe andare bene su Windows (specialmente Strawberry Perl).

Ci sono molte altre cose che puoi fare anche con lo strumento cpan.Ecco un riepilogo delle funzionalità attuali (che potrebbero essere più recenti di quelle fornite con CPAN.pm e 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 'install Foo'

Vedi anche Sì, anche tu puoi usare CPAN.Mostra come utilizzare CPAN senza avere accesso root o sudo.

Otto ha fatto a buon suggerimento.Questo funziona anche per Debian, così come per qualsiasi altro derivato Debian.Il pezzo mancante è cosa fare quando la ricerca apt-cache non trova qualcosa.

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

Quindi ogni volta che hai un modulo casuale che desideri installare:

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

Questo ti darà un pacchetto deb che puoi installare per ottenere Some::Random::Module.Uno dei grandi vantaggi qui è che le pagine man e gli script di esempio oltre al modulo stesso verranno posizionati nella posizione scelta dalla tua distribuzione.Se mai la distribuzione esce con un pacchetto ufficiale per una versione più recente di Some::Random::Module, verrà installato automaticamente quando si esegue apt-get upgrade.

Ho già risposto e ho accettato la risposta, ma comunque:

IMHO il modo più semplice per installare i moduli CPAN (su sistemi simili a Unix e non ho idea di Windows) è:

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

Quanto sopra sta installando il "programma di installazione dei moduli CPAN a configurazione zero" chiamato cpanm.(L'installazione può richiedere diversi minuti: non interrompere il processo)

e dopo - semplicemente:

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

Molti consigli per CPAN.pm, il che è fantastico, ma se stai utilizzando Perl 5.10 allora hai anche accesso a CPANPLUS.pm che è come CPAN.pm ma meglio.

E, naturalmente, è disponibile su CPAN per le persone che utilizzano ancora versioni precedenti di Perl.Perché non provare:

$ cpan CPANPLUS

Molte volte accade che il comando cpan install fallisca con il messaggio like"make test ha restituito uno stato errato, non verrà installato senza forzatura"

In tal caso, segue il modo di installare il modulo:

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

Su Ubuntu la maggior parte dei moduli Perl sono già pacchettizzati, quindi l'installazione è molto più veloce rispetto alla maggior parte degli altri sistemi che devono essere compilati.

Installare Foo::Bar al prompt dei comandi, ad esempio, di solito fai semplicemente:

sudo apt-get install libfoo-bar-perl

Purtroppo non tutti i moduli seguono questa convenzione di denominazione.

Anche dovrebbe funzionare:

cpan -i module_name

Usa il comando cpan come cpan Modulename

$ cpan HTML::Parser

Per installare automaticamente le dipendenze, seguire quanto segue

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

preferisco App::cpanminus, installa automaticamente le dipendenze.Basta fare

$ cpanm HTML::Parser

2 modi che conosco:

UTILIZZANDO PPM:

Con finestre (ActivePerl) Ho usato ppm

dalla riga di comando digitare ppm.Al prompt ppm...

ppm> install foo

O

ppm> search foo

per ottenere un elenco dei moduli foo disponibili.Tipo aiuto per tutti i comandi

UTILIZZANDO CPAN:

puoi anche usare CPAN in questo modo (*sistemi nix) :

perl -MCPAN -e 'shell'

ti dà un suggerimento

cpan>

al momento giusto...

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

digitare h per ottenere un elenco di comandi per cpan

Su Fedora puoi usare

# yum install foo

fintanto che Fedora ha un pacchetto esistente per il modulo.

SU Fedora Linux O Enterprise Linux, yum tiene traccia anche delle dipendenze delle librerie Perl.Quindi, se il modulo perl è disponibile e qualche pacchetto rpm esporta quella dipendenza, installerà il pacchetto giusto per te.

yum install 'perl(Chocolate::Belgian)'

(molto probabilmente il pacchetto perl-Chocolate-Belgian, o anche il pacchetto ChocolateFactory)

Il modo più semplice per me è questo:

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

a) rilevamento/risoluzione/installazione automatica delle dipendenze ricorsive

b) è uno shell online, ottimo per gli script di installazione

Se vuoi mettere il nuovo modulo in una posizione personalizzata per cui la tua shell cpan non è configurata, allora forse ti sarà utile quanto segue.

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

A volte puoi usare il yum search foo per cercare il relativo modulo perl, quindi utilizzare yum install xxx installare.

Su Windows con la distribuzione ActiveState di Perl, utilizzare il file ppm comando.

Semplicemente eseguendo cpan Foo::Bar sulla shell servirebbe allo scopo.

Sembra che tu abbia già avuto la risposta, ma ho pensato di intervenire.Questo è quello che faccio in alcuni script su Ubuntu (o server 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";
    }
}

Funziona bene per me, forse c'è qualcosa qui che puoi usare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top