Me sale este error:
Can't locate Foo.pm in @INC
¿Hay una manera más fácil de instalarlo que descargar, descomprimir, hacer, etc.?
cpan
.
Me sale este error:
Can't locate Foo.pm in @INC
¿Hay una manera más fácil de instalarlo que descargar, descomprimir, hacer, etc.?
cpan
.
Respuestas:
En Unix :
generalmente comienzas cpan en tu shell:
# cpan
y escribe
install Chocolate::Belgian
o en forma corta:
cpan Chocolate::Belgian
En Windows :
Si está utilizando ActivePerl en Windows, el PPM (Perl Package Manager) tiene casi la misma funcionalidad que CPAN.pm.
Ejemplo:
# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart
ver ¿Cómo instalo módulos Perl? en las preguntas frecuentes de CPAN
Muchas distribuciones envían muchos módulos perl como paquetes.
apt-cache search 'perl$'
pacman -Ss '^perl-'
dev-perl
Usted debe siempre prefiere como usted se beneficia de seguridad automáticas () actualizaciones y la facilidad de eliminación . Esto puede ser bastante complicado con el cpan herramienta sí.
Para Gentoo hay una buena herramienta llamada g-cpan que construye / instala el módulo desde CPAN y crea un paquete Gentoo ( ebuild ) para usted.
ppm
utiliza guiones -
porque especifica la distribución que desea instalar, lo cual es mucho más honesto. Por ejemplo, si lo cpan
instala LWP
, LWP::Simple
o LWP::UserAgent
instalará la distribución libwww-perl
por usted. La mayoría de las distribuciones contienen un solo módulo con un nombre equivalente, pero hay varias excepciones como esa
Pruebe la aplicación :: cpanminus :
# cpanm Chocolate::Belgian
Es genial solo para instalar cosas. No proporciona ninguna de las funciones más complejas de CPAN o CPANPLUS, por lo que es fácil de usar, siempre que sepa qué módulo desea instalar. Si aún no tienes cpanminus, solo escribe:
# cpan App::cpanminus
para instalarlo
También es posible instalarlo sin usar cpan. El procedimiento básico de arranque es,
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Para obtener más información, vaya a la página App :: cpanminus y consulte la sección sobre instalación.
cpan
para instalar App::cpanminus
es un poco extraño. Las instrucciones de instalación normales implican un procedimiento de arranque de descargar una parte de él desde cpanmin.us y usarlo para instalar el resto. Esto evita la configuración cpan
y la creación de un .cpan
directorio inútil (a partir de entonces) .
cpanminus
desde la terminal. Me parece cpanm
mejor que cpan
porque no pone registros de errores en la pantalla, sino que los almacena en archivos de registro temporales y proporciona la ruta en caso de errores.
Observo a algunas personas que sugieren una ejecución de cpan en sudo. Solía ser necesario instalarlo en el directorio del sistema, pero las versiones modernas del shell CPAN le permiten configurarlo para usar sudo solo para la instalación. Esto es mucho más seguro, ya que significa que las pruebas no se ejecutan como root.
Si tiene un antiguo shell CPAN, simplemente instale el nuevo cpan ("instalar CPAN") y cuando vuelva a cargar el shell, debería solicitarle que configure estas nuevas directivas.
Hoy en día, cuando estoy en un sistema con un antiguo CPAN, lo primero que hago es actualizar el shell y configurarlo para que pueda hacer la mayor parte de mi trabajo de cpan como usuario normal.
Además, sugeriría encarecidamente que los usuarios de Windows investiguen la fresa Perl . Esta es una versión de Perl que viene con un shell CPAN preconfigurado y un compilador. También incluye algunos módulos Perl difíciles de compilar con sus dependencias externas de la biblioteca C, en particular XML :: Parser. Esto significa que puede hacer lo mismo que cualquier otro usuario de Perl cuando se trata de instalar módulos, y las cosas tienden a "simplemente funcionar" mucho más a menudo.
install CPAN
¿de donde? $sudo apt-get install cpan
?
App::cpanminus
, es una alegría usarlo. Philip Potter lo sugiere en su respuesta aquí y puedes probar este Chas. Owens responde .
Si está en Ubuntu y desea instalar el módulo perl preenvasado (por ejemplo, geo :: ipfree) intente esto:
$ apt-cache search perl geo :: ipfree libgeo-ipfree-perl - Un país para buscar el módulo Perl de la dirección IP $ sudo apt-get install libgeo-ipfree-perl
Un par de personas mencionaron la utilidad cpan, pero es más que simplemente iniciar un shell. Simplemente dele los módulos que desea instalar y deje que funcione.
$prompt> cpan Foo::Bar
Si no le da ningún argumento, inicia el shell CPAN.pm. Esto funciona en Unix, Mac, y debería estar bien en Windows (especialmente Strawberry Perl).
Hay varias otras cosas que puede hacer con la herramienta cpan también. Aquí hay un resumen de las características actuales (que podrían ser más nuevas que la 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.
Consulte también Sí, incluso puede usar CPAN . Muestra cómo puede usar CPAN sin tener acceso root o sudo.
Otto hizo un buena sugerencia . Esto también funciona para Debian, así como para cualquier otro derivado de Debian. Lo que falta es qué hacer cuando apt-cache search no encuentra algo.
$ sudo apt-get install dh-make-perl build-essential apt-file
$ sudo apt-file update
Luego, cuando tenga un módulo aleatorio que desee 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 de Deb que puede instalar para obtener Some :: Random :: Module. Uno de los grandes beneficios aquí son las páginas man y los scripts de muestra, además del módulo en sí se colocarán en la ubicación de su distribución de elección. Si alguna vez sale la distribución con un paquete oficial para una versión más nueva de Some :: Random :: Module, se instalará automáticamente cuando realice la actualización.
Ya respondí y acepté la respuesta, pero de todos modos:
En mi humilde opinión, la forma más fácil de instalar módulos CPAN (en sistemas similares a Unix, y no tengo idea de las maravillas) es:
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Lo anterior está instalando el "instalador de módulos CPAN de configuración cero" llamado cpanm
. (La instalación puede tardar varios minutos; no interrumpa el proceso)
y después, simplemente:
cpanm Foo
cpanm Module::One
cpanm Another::Module
Muchas recomendaciones para CPAN.pm
, lo cual es genial, pero si lo estás usando Perl 5.10
, también tienes acceso a lo CPANPLUS.pm
que es CPAN.pm
mejor.
Y, por supuesto, está disponible CPAN
para las personas que todavía usan versiones anteriores de Perl. ¿Por qué no intentarlo?
$ cpan CPANPLUS
Muchas veces sucede que el comando cpan install falla con el mensaje "hacer que la prueba haya devuelto un estado incorrecto, no se instalará sin fuerza"
En ese caso, la siguiente es la forma de instalar el módulo:
perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
En ubuntu, la mayoría de los módulos perl ya están empaquetados, por lo que la instalación es mucho más rápida que la mayoría de los otros sistemas que tienen que compilarse.
Para instalar Foo::Bar
en un símbolo del sistema, por ejemplo, generalmente solo debe hacer:
sudo apt-get install libfoo-bar-perl
Lamentablemente, no todos los módulos siguen esa convención de nomenclatura.
Use el comando cpan como cpan Modulename
$ cpan HTML::Parser
Para instalar dependencias automáticamente siga lo siguiente
$ perl -MCPAN -e shell
cpan[1]> o conf prerequisites_policy follow
cpan[2]> o conf commit
exit
Prefiero App :: cpanminus , instala dependencias automáticamente. Solo haz
$ cpanm HTML::Parser
2 maneras que conozco:
USANDO PPM:
Con Windows (ActivePerl) he usado ppm
desde la línea de comando escriba ppm. En el indicador de ppm ...
ppm> install foo
o
ppm> search foo
para obtener una lista de módulos foo disponibles. Escribe ayuda para todos los comandos
USANDO CPAN:
También puede usar CPAN como este ( * sistemas nix ):
perl -MCPAN -e 'shell'
te da un aviso
cpan>
en el aviso ...
cpan> install foo (again to install the foo module)
escriba h para obtener una lista de comandos para cpan
En Fedora puedes usar
# yum install foo
siempre y cuando Fedora tenga un paquete existente para el módulo.
En Fedora Linux
o Enterprise Linux
, yum
también rastrea las dependencias de la biblioteca perl. Entonces, si el módulo perl está disponible y algunos paquetes rpm exportan esa dependencia, instalará el paquete adecuado para usted.
yum install 'perl(Chocolate::Belgian)'
(muy probablemente el paquete perl-Chocolate-Belgian, o incluso el paquete ChocolateFactory)
Si desea colocar el nuevo módulo en una ubicación personalizada que su shell cpan no esté configurado para usar, entonces quizás lo siguiente sea ú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 puede usar yum search foo
para buscar el módulo perl relativo, luego usar yum install xxx
para instalar.
Solución segura
Muchas respuestas mencionan el uso de la cpan
utilidad (que usa CPAN.pm
) sin una palabra sobre seguridad. Por defecto, CPAN
2.27 y las configuraciones anteriores urllist
usan una URL http (es decir, http://www.cpan.org/ ), que permite ataques MITM, por lo tanto, es inseguro. Esto es lo que se usa para descargar los CHECKSUMS
archivos, por lo que debe cambiarse a una URL segura (por ejemplo, https://www.cpan.org/ ).
Entonces, después de ejecutar cpan y aceptar la configuración predeterminada, debe modificar el MyConfig.pm
archivo generado (se genera la ruta completa) de la siguiente manera. Reemplazar
'urllist' => [q[http://www.cpan.org/]],
por
'urllist' => [q[https://www.cpan.org/]],
Nota: https no es suficiente; También necesita un sitio web en el que pueda confiar. Por lo tanto, tenga cuidado si desea elegir un espejo arbitrario.
Entonces puedes usar cpan
de la manera habitual.
Mi informe de error en rt.cpan.org sobre la URL insegura.
https://www.cpan.org/
).
Simplemente ejecutar cpan Foo::Bar
en shell serviría el propósito.
Parece que ya tienes tu respuesta, pero pensé que iba a intervenir. Esto es lo que hago en algunos scripts en un Ubuntu (o servidor 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";
}
}
Esto funciona bien para mí, tal vez hay algo aquí que puedes usar.