consigo este error:¿Cuál es la forma más fácil de instalar un módulo Perl perdido?
Can't locate Foo.pm in @INC
¿Hay una manera más fácil para instalarlo que la descarga, desempaquetarlo, decisiones, etc.?
consigo este error:¿Cuál es la forma más fácil de instalar un módulo Perl perdido?
Can't locate Foo.pm in @INC
¿Hay una manera más fácil para instalarlo que la descarga, desempaquetarlo, decisiones, etc.?
En Unix:
por lo general se empiezan CPAN en la shell:
# cpan
y escriba
install Chocolate::Belgian
o en forma corta:
cpan Chocolate::Belgian
En Windows:
If you're using ActivePerl on Windows, the PPM (Perl Package Manager) has much of the same functionality as CPAN.pm.
Ejemplo:
# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart
ver How do I install Perl modules? en el FAQ CPAN
Muchas distribuciones enviar una gran cantidad de módulos de perl como paquetes.
apt-cache search 'perl$'
Usted debe siempre ellos prefieren que se beneficiará de automática (seguridad) actualizaciones y la facilidad de extracción . Esto puede ser bastante complicado con la herramienta cpan.
Para Gentoo hay una buena herramienta llamada g-cpan que construye/instala el módulo de CPAN y crea un paquete de Gentoo (ebuild) para usted.
La forma abreviada es simplemente "cpan Chocolate :: Belgian" desde la línea de comandos :) –
IIRC, el último ActivePerl ya no tiene ppm de línea de comandos, ahora abre una elegante GUI. – Kev
Solo "ppm" abre la GUI, pero seguida de comandos permanece en la línea de comando. Entonces, "ppm help", "ppm install ...", etc. –
sudo perl -MCPAN -e 'install Foo'
Si estás en Ubuntu y que desea instalar el módulo Perl pre-envasados (por ejemplo, geo :: ipfree) intente 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
Esto es genial. Gracias. –
En Windows con la distribución de ActiveState Perl, el uso el comando ppm.
2 maneras, que yo sepa:
USO PPM:
Con de Windows ppm (ActivePerl) He usado
del comando ppm tipo de línea. En el símbolo ppm ...
ppm> install foo
o
ppm> search foo
para obtener una lista de módulos foo disponibles. Tipo ayuda para todos los comandos
USO CPAN:
también se puede utilizar CPAN como esto (sistemas * nix):
perl -MCPAN -e 'shell'
le consigue una pronta
cpan>
en el indicador ...
cpan> install foo (again to install the foo module)
tipo H para obtener una lista de comandos para CPAN
También puede decir "$ cpan Foo :: Bar" para instalar directamente desde la línea de comandos. No es necesario un forro de una sola línea de lujo o CPAN. :) –
observo algunas personas sugieren una CPAN plazo bajo 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 la instalación. 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, debe solicitarle que configure estas nuevas directivas.
Actualmente, 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 strawberry 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.
'instalar CPAN' desde donde? '$ sudo apt-get install cpan'? – isomorphismes
@Lao Tzu: no, ya que CPAN es el módulo central de Perl y no está disponible como paquete DEB por separado. Creo que en la mayoría de las situaciones es incluso mejor usar 'App :: cpanminus', es una gran alegría usarlo. Philip Potter lo sugiere en su respuesta aquí y puedes probar [este Chas. Respuesta de Owens] (http://stackoverflow.com/questions/2980297/how-can-i-use-cpan-as-a-non-root-user). –
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 lo da ningún argumento de que comience la cáscara CPAN.pm. Esto funciona en Unix, Mac, y debería estar bien en Windows (especialmente Strawberry Perl).
También hay otras cosas que puedes hacer con la herramienta cpan.He aquí un resumen de las características actuales (que podría ser más reciente 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.
también ver Yes, even you can use CPAN. Muestra cómo puede usar CPAN sin tener acceso root o sudo.
Un montón de recomendación para CPAN.pm
, que es grande, pero si usted está utilizando Perl 5.10
entonces 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 todavía usan versiones anteriores de Perl. Por qué no probar:
$ cpan CPANPLUS
Je, eso es lindo. Use CPAN.pm para reemplazarse con CPANPLUS. :) –
Otto hizo una good suggestion. 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
Entonces cada vez que tenga un módulo de azar 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 conseguir un poco aleatorio :: :: Módulo. 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.
En Fedora puede utilizar
# yum install foo
el tiempo que Fedora tiene un paquete existente para el módulo.
Trate App::cpanminus:
# cpanm Chocolate::Belgian
Es muy bueno para conseguir justo instalado 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 ha recibido cpanminus, simplemente escriba:
# 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 más información vaya a la página de App :: cpanminus y mirar el apartado de instalación.
Usar '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 http://cpanmin.us y usarlo para instalar el resto. Esto evita la configuración de 'cpan' y la creación de un (inútil)' .cpan' directorio. –
En Ubuntu, puede instalar 'cpanminus' desde la terminal. Encuentro 'cpanm' mejor que' cpan' porque no coloca registros de errores en la pantalla sino que los almacena en archivos de registro temporales y proporciona la ruta en caso de errores. – user13107
Recibo este error al intentar tu comando: ** No puedo ubicar strict.pm en @INC (puede que tengas que instalar el módulo estricto) (@INC contiene:/etc/perl ** –
Incluso debería funcionar:
cpan -i module_name
ya ha respondido y aceptado respuesta - pero de todos modos:
mi humilde opinión, la forma más fácil de instalar módulos de CPAN (en sistemas Unix, y no tienen idea acerca de los wondows) es:
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
lo anterior se instalar el "CPAN configuración cero módulos instalador" llamado cpanm
. (Puede tardar varios minutos para instalar - no romper el proceso)
y después de - simplemente:
cpanm Foo
cpanm Module::One
cpanm Another::Module
Muchas veces ocurre que CPAN el comando de instalación falla con el mensaje como "make test había vuelto mal estado, no se 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));"
Desafortunadamente esto produce: * * No se puede ubicar CPAN.pm en @INC (es posible que deba instalar el módulo CPAN) (@INC contiene:/etc/perl ** –
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 símbolo del commmand por ejemplo, por lo general sólo lo hacen:
sudo apt-get install libfoo-bar-perl
Por desgracia, no todos los módulos de seguimiento que la convención de nombres.
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
comando Uso CPAN como cpan Modulename
$ cpan HTML::Parser
Para instalar las dependencias siguen automáticamente el siguiente
$ perl -MCPAN -e shell
cpan[1]> o conf prerequisites_policy follow
cpan[2]> o conf commit
exit
prefiero App::cpanminus, se instala automáticamente las dependencias. Eso sí,
$ cpanm HTML::Parser
A veces se puede utilizar el yum search foo
para buscar el módulo Perl relativa, a continuación, utilizar yum install xxx
instalar.
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)'
(muy probablemente Perl-chocolate-belga paquete, o paquete, incluso ChocolateFactory)
simplemente ejecutando cpan Foo::Bar
en el caparazón serviría a los fines.
parece que ya tienes tu respuesta, pero pensé que había que interrumpiría. 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([email protected]){
system("cpanm $x");
eval "use $x";
}
}
Esto funciona bien para mí , tal vez hay algo aquí que puedes usar.
La manera más fácil para mí es la siguiente:
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install DateTime::TimeZone'
a) detección de la dependencia recursiva automática/resolver/instalar
b) es un onliner cáscara, buena para la configuración de los scripts
Si el módulo en cuestión es un módulo central, consulte [Cómo solucionar "No se puede encontrar el archivo/Tar.pm"] (https://stackoverflow.com/q/47801223/589924). – ikegami