Pregunta

Me sale este error:

Can't locate Foo.pm in @INC

Hay una manera más fácil de instalar que descargar, desempaquetar, decisiones, etc?

¿Fue útil?

Solución

En Unix:

por lo general, usted empezar cpan en la shell:

# cpan

y el tipo

install Chocolate::Belgian

o en forma corta:

cpan Chocolate::Belgian

En Windows:

Si usted está utilizando el ActivePerl en Windows, el PPM (Perl Package Manager) tiene gran parte de la misma funcionalidad que CPAN.pm.

Ejemplo:

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

ver ¿Cómo puedo instalar los módulos de Perl? en el CPAN FAQ

Muchas distribuciones proporcionan una gran cantidad de módulos de perl como paquetes.

  • Debian/Ubuntu: apt-cache search 'perl$'
  • Arch Linux: pacman -Ss '^perl-'
  • Gentoo:categoría dev-perl

Usted debe siempre los prefieren como benefician automático (de seguridad) actualizaciones y la facilidad de la eliminación de.Esto puede ser bastante difícil con el cpan la herramienta en sí.

Para Gentoo hay una buena herramienta llamada g-cpan lo que se construye o instala el módulo de CPAN y crea un paquete de Gentoo (ebuild) para usted.

Otros consejos

Trate de App::cpanminus:

# cpanm Chocolate::Belgian

Es ideal para simplemente conseguir material instalado.Se proporciona ninguna de las funcionalidades más complejas de CPAN o CPANPLUS, por lo que es fácil de usar, siempre y cuando se conozca que el módulo que desea instalar.Si usted no lo ha conseguido ya cpanminus, sólo tienes que escribir:

# cpan App::cpanminus

para instalarlo.

También es posible instalarlo sin necesidad de utilizar cpan en todo.El basic procedimiento de arranque es,

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

Para obtener más información, vaya a la App::cpanminus página y buscar en la sección de instalación.

Tomo nota de algunas personas lo que sugiere una carrera cpan bajo sudo.Que solía ser necesario para instalar en el directorio del sistema, pero las versiones modernas de la CPAN shell permite configurarlo para usar sudo sólo para la instalación.Esto es mucho más seguro, ya que significa que los exámenes no se ejecutan como root.

Si usted tiene un viejo CPAN shell, simplemente instalar la nueva cpan ("instalar CPAN") y cuando se vuelve a cargar el shell, se le pedirá que configure estas nuevas directrices.

Hoy en día, cuando estoy en un sistema con un viejo CPAN, la primera cosa que voy a hacer es actualizar la shell y la levantó para hacer esto, así que puedo hacer la mayoría de mis cpan trabajo como un usuario normal.

También, me gustaría sugerir fuertemente que los usuarios de Windows investigar strawberry Perl.Esta es una versión de Perl que viene con un pre-configurado CPAN shell así como un compilador.También incluye algunos de difícil compilar módulos de Perl con sus externa C dependencias de la biblioteca, en particular, XML::Parser.Esto significa que usted puede hacer lo mismo que todos los demás Perl de usuario cuando se trata de la instalación de los módulos, y las cosas tienden a "sólo trabajo" mucho más a menudo.

Si estás en Ubuntu y desea instalar el pre-envasados módulo de perl (por ejemplo, geo::ipfree) prueba esto:

    $ 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 par de personas que se mencionan en el cpan utilidad, pero es más que sólo a partir de un caparazón.Sólo los módulos que desea instalar y dejarlo hacer su trabajo.

$prompt> cpan Foo::Bar

Si no se dan los argumentos que se inicia el CPAN.pm shell.Esto funciona en Unix, Mac, y debe estar muy bien en Windows (especialmente Strawberry Perl).

Hay varias otras cosas que usted puede hacer con el cpan herramienta así.He aquí un resumen de las características actuales (que podría ser más reciente que el que viene con CPAN.pm y 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'

Ver también Sí, incluso se puede utilizar CPAN.Se muestra cómo puede utilizar el CPAN sin tener root o sudo acceso.

Otto hizo un buena sugerencia.Esto funciona para Debian también, así como cualquier otro derivado de Debian.La pieza que falta es qué hacer cuando apt-cache search no encontrar algo.

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

Entonces, cuando usted tiene un azar del módulo que desea instalar:

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

Esto le dará un paquete deb que se puede instalar para obtener Algunas::Aleatorio::Módulo.Uno de los beneficios más grandes aquí está el hombre de las páginas y scripts de ejemplo además del propio módulo será colocado en la distribución del lugar de su elección.Si la distro sale con un paquete oficial para una versión más reciente de Algunas::Aleatorio::Módulo se instalará automáticamente cuando usted apt-get upgrade.

Ya respondió y aceptado respuesta, pero de todos modos:

En mi humilde opinión, la manera más fácil de instalar módulos de CPAN (en unix como de los sistemas, y no tienen idea acerca de la wondows) es:

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

La de arriba es la instalación de la "configuración cero de instalador de módulos de CPAN" llamado cpanm.(Puede tardar varios minutos para instalar - no romper el proceso)

y después simplemente:

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

Un montón de recomendación para CPAN.pm, que es grande, pero si usted está utilizando Perl 5.10 luego también tienes acceso a CPANPLUS.pm que es como CPAN.pm pero mejor.

Y, por supuesto, está disponible en CPAN para las personas que siguen usando versiones antiguas de Perl.¿Por qué no probar:

$ cpan CPANPLUS

Muchas veces sucede que cpan comando de instalación falla con el mensaje como "hacer la prueba había regresado mal estado, no instalar sin fuerza"

En ese caso siguiente es la manera de instalar el módulo:

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

En ubuntu, la mayoría de los módulos de perl que ya están empaquetadas, por lo que la instalación es mucho más rápida que la mayoría de los otros sistemas que han de compilar.

Para instalar Foo::Bar en un prompt de comandos, por ejemplo, por lo general, usted acaba de hacer:

sudo apt-get install libfoo-bar-perl

Lamentablemente no todos los módulos se sigue que la convención de nomenclatura.

Incluso debería funcionar:

cpan -i module_name

El uso de cpan comando como cpan Modulename

$ cpan HTML::Parser

Para instalar las dependencias automáticamente siga los siguientes

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

Yo prefiero App::cpanminus, instala las dependencias automáticamente.Acaba de hacer

$ cpanm HTML::Parser

2 formas que yo sepa :

EL USO DE PPM :

Con Windows (ActivePerl) he usado ppm

desde la línea de comandos escriba ppm.En el ppm petición ...

ppm> install foo

o

ppm> search foo

para obtener una lista de foo módulos disponibles.Tipo de ayuda para todos los comandos

EL USO DE CPAN :

también puede utilizar CPAN como esta (los sistemas *nix) :

perl -MCPAN -e 'shell'

usted obtiene un mensaje

cpan>

en el símbolo del sistema ...

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

tipo h para obtener una lista de comandos para cpan

En Fedora puede utilizar

# yum install foo

mientras Fedora tiene un paquete existente para el módulo.

En Fedora Linux o Enterprise Linux, yum también realiza el seguimiento de perl dependencias de la biblioteca.Por lo tanto, si el módulo de perl está disponible, y algunos de paquete rpm de las exportaciones de esa dependencia, se instalará el paquete adecuado para usted.

yum install 'perl(Chocolate::Belgian)'

(lo más probable perl Chocolate Belga paquete, o incluso ChocolateFactory paquete)

Forma más fácil para mí es esta:

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

a) automático recursiva de dependencia de detección/resolución/instalación de

b) es un shell onliner, bueno para la instalación de los scripts

Si usted quiere poner el nuevo módulo en una ubicación personalizada que su cpan shell no está configurado para usar, entonces, tal vez, el siguiente va a ser muy útil.

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

A veces se puede utilizar la yum search foo para buscar la relativa módulo de perl, a continuación, utilizar yum install xxx para instalar.

En Windows con el ActiveState distribución de Perl, el uso de la ppm comando.

Simplemente ejecutar cpan Foo::Bar en el shell de servir al propósito.

Parece que ya tienes tu respuesta, pero pensé que había que meter la cuchara.Esto es lo que tengo que hacer en algunas secuencias de comandos en Ubuntu (o debian server)

#!/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";
    }
}

Esto funciona bien para mí, tal vez aquí hay algo que usted puede utilizar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top