manager - ¿Cuál es la forma más fácil de instalar un módulo Perl perdido?
linux install cpan module (23)
Me sale este error:
Can''t locate Foo.pm in @INC
¿Hay una manera más fácil de instalarlo que descargar, quitar el sello, hacer, etc.?
2 formas 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. Escriba ayuda para todos los comandos
USANDO CPAN:
también puedes usar CPAN como este ( * nix systems ):
perl -MCPAN -e ''shell''
te trae un aviso
cpan>
en el momento ...
cpan> install foo (again to install the foo module)
escriba h para obtener una lista de comandos para cpan
Algunas veces puedes usar el yum search foo
para buscar el módulo perl relativo, luego usa yum install xxx
para instalarlo.
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 algún paquete de rpm exporta esa dependencia, instalará el paquete adecuado para usted.
yum install ''perl(Chocolate::Belgian)''
(Probablemente el paquete Perl-Chocolate-Belgian, o incluso el paquete de ChocolateFactory)
En Fedora puedes usar
# yum install foo
siempre que Fedora tenga un paquete existente para el módulo.
En Windows con la distribución ActiveState de Perl, use el comando ppm .
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 deben compilarse.
Para instalar Foo::Bar
en un comando de comando, por ejemplo, generalmente lo hace:
sudo apt-get install libfoo-bar-perl
Lamentablemente, no todos los módulos siguen esa convención de nombres.
Incluso debería funcionar:
cpan -i module_name
La forma más fácil para mí es esta:
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e ''install DateTime::TimeZone''
a) detección / resolución / instalación de dependencia recursiva automática
b) es un shell onliner, bueno para setup-scripts
Muchas recomendaciones para CPAN.pm
, lo cual es genial, pero si está usando Perl 5.10
, también tiene acceso a CPANPLUS.pm
que es como CPAN.pm
pero mejor.
Y, por supuesto, está disponible en CPAN
para las personas que todavía usan versiones anteriores de Perl. Por qué no probar:
$ cpan CPANPLUS
Muchas veces ocurre que el comando de instalación de cpan falla con el mensaje "la prueba ha devuelto un estado incorrecto, no se instalará sin fuerza"
En ese caso, seguir es la forma de instalar el módulo:
perl -MCPAN -e "CPAN::Shell->force(qw(install Foo::Bar));"
Noto que algunas personas sugieren una carrera por debajo de sudo. Eso solía ser necesario para instalar en el directorio del sistema, pero las versiones modernas del shell CPAN le permiten configurarlo para usar sudo solo para instalarlo. Esto es mucho más seguro, ya que significa que las pruebas no se ejecutan como root.
Si tiene un shell CPAN antiguo, simplemente instale el nuevo cpan ("install CPAN") y cuando vuelva a cargar el shell, debería pedirle que configure estas nuevas directivas.
Hoy en día, cuando estoy en un sistema con un CPAN antiguo, lo primero que hago es actualizar el shell y configurarlo para que pueda hacer la mayor parte de mi trabajo como usuario normal.
Además, recomiendo encarecidamente a los usuarios de Windows que investiguen la fresa Perl . Esta es una versión de Perl que viene empaquetada con un shell CPAN preconfigurado y un compilador. También incluye algunos módulos Perl difíciles de compilar con sus dependencias externas de biblioteca C, especialmente 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 "funcionar" mucho más a menudo.
Otto hizo una buena sugerencia . Esto también funciona para Debian, así como para cualquier otro derivado de Debian. La pieza faltante es qué hacer cuando la búsqueda apt-cache no encuentra algo.
$ sudo apt-get install dh-make-perl build-essential apt-file
$ sudo apt-file update
Luego, cuando tengas un módulo aleatorio que deseas 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 puede instalar para obtener Some :: Random :: Module. Uno de los grandes beneficios aquí son las páginas de manual y las secuencias de comandos de ejemplo, además del módulo en sí, se colocarán en la ubicación de elección de su distribución. Si la distribución alguna vez sale con un paquete oficial para una versión más nueva de Some :: Random :: Module, se instalará automáticamente cuando obtenga una actualización.
Parece que ya tienes tu respuesta, pero pensé que me gustaría entrar. Esto es lo que hago en algunos guiones 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.
Prueba App::cpanminus :
# cpanm Chocolate::Belgian
Es genial solo para obtener cosas instaladas. 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 en absoluto. 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 mire la sección de instalación.
Si desea colocar el nuevo módulo en una ubicación personalizada que su cpan shell no está configurado para usar, entonces tal vez, lo siguiente será útil.
#wget <URL to the module.tgz>
##unpack
perl Build.PL
./Build destdir=$HOME install_base=$HOME
./Build destdir=$HOME install_base=$HOME install
Si estás en Ubuntu y quieres instalar el módulo perl preempaquetado (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
Simplemente ejecutando cpan Foo::Bar
en shell serviría para el propósito.
También vea Sí, incluso usted puede usar CPAN . Muestra cómo puede usar CPAN sin tener acceso root o sudo.
Un par de personas mencionaron la utilidad cpan, pero es más que simplemente iniciar un shell. Solo dele los módulos que desea instalar y deje que funcione.
$prompt> cpan Foo::Bar
Si no le das 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 puedes hacer con la herramienta de cpan también. Aquí hay 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.
-Un módulo [módulo ...] Muestra los mantenedores principales para los módulos especificados
-C module [module ...] Muestra los archivos de Cambios para los módulos especificados
-D module [module ...] Muestra los detalles del módulo. Esto imprime una línea para cada módulo desactualizado (es decir, módulos instalados localmente pero tienen versiones más nuevas en CPAN). Cada línea tiene tres columnas: nombre del módulo, versión local y versión de CPAN.
-L autor [autor ...] Enumere los módulos por los autores especificados.
-h Imprime un mensaje de ayuda.
-O Muestra los módulos desactualizados.
-r Recompila módulos cargados dinámicamente con CPAN :: Shell-> recompilar.
-v Imprime la versión de script y la versión de CPAN.pm.
Use el comando cpan Modulename
como cpan Modulename
$ cpan HTML::Parser
Para instalar dependencias automáticamente siga el 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
Ya respondió y aceptó la respuesta, pero de todos modos:
En mi humilde opinión, la manera más fácil de instalar los módulos de CPAN (en sistemas tipo Unix, y no tener idea de las wondows) es:
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Lo anterior es instalar el "instalador de módulos de CPAN de configuración cero" llamado cpanm
. (Puede tomar varios minutos para instalar, no interrumpa el proceso)
y después - simplemente:
cpanm Foo
cpanm Module::One
cpanm Another::Module
sudo perl -MCPAN -e ''install Foo''
En Unix :
generalmente comienzas cpan en tu caparazón:
# cpan
y tipo
install Chocolate::Belgian
o en forma corta:
cpan Chocolate::Belgian
En Windows :
Si está utilizando ActivePerl en Windows, el PPM (Perl Package Manager) tiene muchas de las mismas funciones que CPAN.pm.
Ejemplo:
# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart
ver ¿Cómo instalo los módulos de Perl? en las preguntas frecuentes de CPAN
Muchas distribuciones envían muchos módulos perl como paquetes.
- Gentoo: categoría dev-perl
- Debian:
apt-cache search ''perl$''
Siempre debe preferirlos ya que se beneficia de las actualizaciones automáticas (de seguridad) y la facilidad de eliminación . Esto puede ser bastante complicado con la herramienta de cpan .
Para Gentoo hay una buena herramienta llamada dev-perl que construye / instala el módulo desde CPAN y crea un paquete de Gentoo ( ebuild ) para usted.