Qual é a maneira mais fácil de instalar um módulo Perl ausente?

Eu recebo este erro:

Can't locate Foo.pm in @INC

Existe uma maneira mais fácil de instalá-lo do que baixar, descompactar, fazer, etc?

No Unix :

normalmente você inicia o cpan no seu shell:

# cpan

e digite

install Chocolate::Belgian

ou de forma resumida:

cpan Chocolate::Belgian

No Windows :

Se você estiver usando o ActivePerl no Windows, o PPM (Perl Package Manager) tem a mesma funcionalidade que o CPAN.pm.

Exemplo:

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

veja Como instalar módulos Perl? no FAQ da CPAN

Muitas distribuições enviam muitos módulos perl como pacotes.

  • Gentoo: categoria dev-perl
  • Debian: apt-cache search 'perl$'

Você deve sempre preferi-los, pois se beneficia de atualizações automáticas (de segurança) e da facilidade de remoção . Isso pode ser bastante complicado com a própria ferramenta cpan .

Para o Gentoo, existe uma boa ferramenta chamada g-cpan que cria / instala o módulo do CPAN e cria um pacote do Gentoo ( ebuild ) para você.

Experimente App :: cpanminus :

 # cpanm Chocolate::Belgian 

É ótimo para apenas instalar coisas. Ele não oferece nenhuma das funcionalidades mais complexas do CPAN ou CPANPLUS, por isso é fácil de usar, desde que você saiba qual módulo você deseja instalar. Se você ainda não tem cpanminus, basta digitar:

 # cpan App::cpanminus 

para instalá-lo.

Também é possível instalá-lo sem usar o cpan. O procedimento básico de bootstrap é,

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

Para mais informações, acesse a página App :: cpanminus e veja a seção sobre instalação.

Observo algumas pessoas sugerindo uma corrida cpan sob o sudo. Isso costumava ser necessário para instalar no diretório do sistema, mas as versões modernas do shell CPAN permitem configurá-lo para usar o sudo apenas para instalação. Isso é muito mais seguro, já que significa que os testes não são executados como root.

Se você tiver um shell CPAN antigo, basta instalar o novo cpan (“install CPAN”) e, ao recarregar o shell, ele deverá solicitar que você configure essas novas diretivas.

Hoje em dia, quando estou em um sistema com um CPAN antigo, a primeira coisa que faço é atualizar o shell e configurá-lo para fazer isso para que eu possa fazer a maior parte do meu trabalho cpan como um usuário normal.

Além disso, sugiro fortemente que os usuários do Windows investiguem o morango Perl . Esta é uma versão do Perl que vem com um shell CPAN pré-configurado, bem como um compilador. Ele também inclui alguns módulos Perl difíceis de compilar com suas dependencies de bibliotecas C externas, notavelmente XML :: Parser. Isso significa que você pode fazer a mesma coisa que qualquer outro usuário Perl quando se trata de instalar módulos, e as coisas tendem a “simplesmente funcionar” com muito mais frequência.

Se você está no Ubuntu e quer instalar o módulo perl pré-empacotado (por exemplo, geo :: ipfree) tente isto:

     $ apt-cache search perl geo :: ipfree
     libgeo-ipfree-perl - Um país pesquisador do módulo Perl do endereço IP

     $ sudo apt-get instala libgeo-ipfree-perl

Algumas pessoas mencionaram o utilitário cpan, mas é mais do que apenas iniciar um shell. Basta dar os módulos que você deseja instalar e deixar que funcionem.

 $prompt> cpan Foo::Bar 

Se você não der nenhum argumento, ele inicia o shell CPAN.pm. Isso funciona em Unix, Mac, e deve ser muito bem no Windows (especialmente Strawberry Perl).

Existem várias outras coisas que você pode fazer com a ferramenta cpan também. Aqui está um resumo dos resources atuais (que podem ser mais recentes do que o que vem com 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'

Veja também Sim, até você pode usar o CPAN . Mostra como você pode usar o CPAN sem ter access root ou sudo.

Otto fez uma boa sugestão . Isso funciona para o Debian também, assim como qualquer outro derivado do Debian. A peça que falta é o que fazer quando a pesquisa do apt-cache não encontrar algo.

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

Então, sempre que você tiver um módulo random, você deseja instalar:

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

Isto lhe dará um pacote deb que você pode instalar para obter Some :: Random :: Module. Um dos grandes benefícios aqui são man pages e scripts de exemplo, além do próprio módulo, que serão colocados na localização da sua escolha. Se a distro sair com um pacote oficial para uma versão mais nova do Some :: Random :: Module, ela será automaticamente instalada quando você fizer o upgrade do apt-get.

Resposta já respondida e aceita – mas de qualquer forma:

IMHO a maneira mais fácil de instalar módulos CPAN (em sistemas unix como, e não tem idéia sobre as maravilhas) é:

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

O acima é instalar o “instalador de módulos de configuração zero CPAN” chamado cpanm . (Pode levar vários minutos para instalar – não quebre o processo)

e depois – simplesmente:

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

Muitas vezes acontece que o comando cpan install falha com a mensagem “faça teste retornou status ruim, não instala sem força”

Nesse caso, seguir é a maneira de instalar o módulo:

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

Muita recomendação para CPAN.pm , o que é ótimo, mas se você estiver usando Perl 5.10 então você também tem access a CPANPLUS.pm que é como CPAN.pm mas melhor.

E, claro, está disponível no CPAN para pessoas que ainda usam versões mais antigas do Perl. Por que nao tentar:

 $ cpan CPANPLUS 

2 maneiras que eu conheço:

USANDO PPM:

Com o Windows (ActivePerl) eu usei ppm

a partir da linha de comando, digite ppm. No prompt do ppm …

 ppm> install foo 

ou

 ppm> search foo 

para obter uma lista de módulos foo disponíveis. Digite help para todos os comandos

USANDO O CPAN:

você também pode usar o CPAN assim ( sistemas * nix ):

 perl -MCPAN -e 'shell' 

você recebe um aviso

 cpan> 

no prompt …

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

digite h para obter uma lista de comandos para cpan

No Fedora você pode usar

 # yum install foo 

contanto que o Fedora tenha um pacote existente para o módulo.

Até mesmo deveria funcionar:

 cpan -i module_name 

Use o comando cpan Modulename como cpan Modulename

 $ cpan HTML::Parser 

Para instalar dependencies automaticamente siga o abaixo

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

Eu prefiro o App :: cpanminus , ele instala dependencies automaticamente. Apenas faça

 $ cpanm HTML::Parser 

No ubuntu a maioria dos módulos perl já estão empacotados, então a instalação é muito mais rápida que a maioria dos outros sistemas que precisam ser compilados.

Para instalar o Foo::Bar em um prompt de comando, por exemplo, normalmente você apenas faz:

 sudo apt-get install libfoo-bar-perl 

Infelizmente, nem todos os módulos seguem essa convenção de nomenclatura.

No Fedora Linux ou Enterprise Linux , o yum também rastreia as dependencies da biblioteca perl. Portanto, se o módulo perl estiver disponível e algum pacote rpm exportar essa dependência, ele instalará o pacote correto para você.

 yum install 'perl(Chocolate::Belgian)' 

(provavelmente o pacote Perl-Chocolate-Belgian, ou mesmo o pacote ChocolateFactory)

A maneira mais fácil para mim é esta:

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

a) detecção de dependência recursiva automática / resolução / instalação

b) é um shell onliner, bom para setup-scripts

No Windows com a distribuição ActiveState do Perl, use o comando ppm .

Se você quiser colocar o novo módulo em um local personalizado que o seu shell cpan não esteja configurado para usar, então, talvez, o seguinte seja útil.

  #wget  ##unpack perl Build.PL ./Build destdir=$HOME install_base=$HOME ./Build destdir=$HOME install_base=$HOME install 

Às vezes, você pode usar o yum search foo para pesquisar o módulo perl relativo e, em seguida, usar o yum install xxx para instalar.

Parece que você já tem sua resposta, mas eu percebi que eu gritei. Isso é o que eu faço em alguns scripts em um Ubuntu (ou 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"; } } 

Isso funciona bem para mim, talvez haja algo aqui que você possa usar.

Simplesmente executando o cpan Foo::Bar on shell serviria ao propósito.