Pergunta

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?

Foi útil?

Solução

No Unix:

geralmente você começa cpan na sua concha:

# cpan

e digite

install Chocolate::Belgian

ou em formato abreviado:

cpan Chocolate::Belgian

No Windows:

Se você estiver usando ActivePerl no Windows, o PPM (Gerenciador de Pacotes Perl) tem praticamente a mesma funcionalidade do CPAN.pm.

Exemplo:

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

ver Como instalo módulos Perl? nas perguntas frequentes do CPAN

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

  • Debian/Ubuntu: apt-cache search 'perl$'
  • Arco Linux: pacman -Ss '^perl-'
  • Gentoo:categoria dev-perl

Você deve sempre prefira-os, pois você se beneficia do automático (segurança) atualizações e a facilidade de remoção.Isso pode ser bastante complicado com o cpan ferramenta em si.

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

Outras dicas

Tentar Aplicativo::cpanminus:

# cpanm Chocolate::Belgian

É ótimo apenas para 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 deseja instalar.Se você ainda não possui o 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 que algumas pessoas sugerem executar o cpan no 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, pois significa que os testes não são executados como root.

Se você tiver um shell CPAN antigo, simplesmente instale o novo cpan ("instalar CPAN") e quando você 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 com o cpan como um usuário normal.

Além disso, sugiro fortemente que os usuários do Windows investiguem Perl de morango.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 dependências externas de biblioteca C, notadamente 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ê estiver no Ubuntu e quiser instalar o módulo perl pré-empacotado (por exemplo, geo::ipfree) tente isto:

    $ 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

Algumas pessoas mencionaram o utilitário cpan, mas é mais do que apenas iniciar um shell.Basta fornecer os módulos que deseja instalar e deixá-lo funcionar.

$prompt> cpan Foo::Bar

Se você não fornecer nenhum argumento, ele iniciará o shell CPAN.pm.Isso funciona em Unix, Mac e deve funcionar bem no Windows (especialmente Strawberry Perl).

Existem várias outras coisas que você também pode fazer com a ferramenta cpan.Aqui está um resumo dos recursos atuais (que podem ser mais recentes que aquele 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 CPAN.Mostra como você pode usar o CPAN sem ter acesso root ou sudo.

Otto fez um boa sugestão.Isso também funciona para o Debian, assim como para qualquer outro derivado do Debian.A peça que falta é o que fazer quando a pesquisa do apt-cache não encontra 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 aleatório que 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

Isso lhe dará um pacote deb que você pode instalar para obter Some::Random::Module.Um dos grandes benefícios aqui são as páginas de manual e os scripts de amostra, além do próprio módulo, que serão colocados no local de sua distribuição escolhido.Se a distribuição vier com um pacote oficial para uma versão mais recente do Some::Random::Module, ele será instalado automaticamente quando você fizer o apt-get upgrade.

Já respondi e aceitei a resposta - mas mesmo assim:

IMHO, a maneira mais fácil de instalar módulos CPAN (em sistemas do tipo Unix e não tenho ideia das maravilhas) é:

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

O acima está instalando o "instalador de módulos CPAN de configuração zero" chamado cpanm.(Pode levar vários minutos para instalar - não interrompa o processo)

e depois - simplesmente:

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

Muitas recomendações para CPAN.pm, o que é ótimo, mas se você estiver usando Perl 5.10 então você também terá acesso a CPANPLUS.pm que é como CPAN.pm mas melhor.

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

$ cpan CPANPLUS

Muitas vezes acontece que o comando de instalação cpan falha com a mensagem como"make test retornou status ruim, não instala sem forçar"

Nesse caso a seguir está a maneira de instalar o módulo:

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

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

Para instalar 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.

Até deveria funcionar:

cpan -i module_name

Use o comando cpan como cpan Modulename

$ cpan HTML::Parser

Para instalar dependências automaticamente siga o seguinte

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

eu prefiro Aplicativo::cpanminus, ele instala dependências automaticamente.Apenas faça

$ cpanm HTML::Parser

2 maneiras que eu conheço:

USANDO PPM:

Com janelas (ActivePerl) usei ppm

na 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.Tipo ajuda para todos os comandos

USANDO CPAN:

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

perl -MCPAN -e 'shell'

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.

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

yum install 'perl(Chocolate::Belgian)'

(provavelmente pacote perl-Chocolate-Belgian, ou mesmo pacote ChocolateFactory)

A maneira mais fácil para mim é esta:

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

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

b) é um shell onliner, bom para scripts de configuração

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

 #wget <URL to the module.tgz>
 ##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, então use yum install xxx para instalar.

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

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

Parece que você já tem sua resposta, mas resolvi intervir.Isto é 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top