it-swarm-pt.tech

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?

166
dreeves

no Unix:

normalmente você inicia 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 muito da mesma funcionalidade que o CPAN.pm.

Exemplo:

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

consulte Como instalo módulos Perl? na FAQ do CPAN

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

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

Você deve sempre preferi-los à medida que você se beneficia da segurança (automática) atualizações e da facilidade de remoção. Isso pode ser bem complicado com a própria ferramenta cpan .

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

202
Benedikt Waldvogel

Tente 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, apenas digite:

# cpan App::cpanminus

para instalá-lo.

Também é possível instalá-lo sem usar o cpan. O procedimento básico 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.

61
Philip Potter

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

Se você tem um antigo CPAN Shell, simplesmente instale o novo cpan ("install 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 cpan como um usuário normal.

Além disso, eu sugiro fortemente que os usuários do Windows investiguem morango Perl . Esta é uma versão do Perl que vem empacotada com um CPAN Shell pré-configurado, assim como um compilador. Ele também inclui alguns módulos Perl difíceis de compilar com suas dependências externas da biblioteca C, 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.

28
Dave Rolsky

Se você está no Ubuntu e deseja 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 pesquisado de endereço IP módulo Perl 
 
 $ Sudo apt-get instale o libgeo-ipfree-Perl 
23
Otto

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 fornecer argumentos, inicia o shell CPAN.pm. Isso funciona no 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 recursos 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.
15
brian d foy

Sudo Perl -MCPAN -e 'install Foo'

11
dreeves

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

10
Corion

Otto fez um 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 aleatório, 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.

8
mikegrb

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

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

curl -L http://cpanmin.us | Perl - --Sudo App::cpanminus

O acima está instalando 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
7
jm666

Muita recomendação para CPAN.pm, o que é ótimo, mas se você estiver usando Perl 5.10, 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
6
Dave Cross

Muitas vezes acontece que o comando cpan install falha com a mensagem like "make test 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));"
5
jaxbihani

No ubuntu, a maioria dos módulos Perl já estão empacotados, portanto, 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.

4
Myforwik

Até mesmo deveria funcionar:

cpan -i module_name
4
Mandar Pande

Use o comando cpan como cpan Modulename

$ cpan HTML::Parser

Para instalar dependências automaticamente siga o abaixo

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

Eu prefiro App :: cpanminus , instala dependências automaticamente. Apenas faça

$ cpanm HTML::Parser
4
Chankey Pathak

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

3
Mister X

2 maneiras que eu conheço:

SANDO PPM:

Com 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

SANDO CPAN:

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

Perl -MCPAN -e 'Shell'

você recebe um prompt

cpan>

no prompt ...

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

digite h para obter uma lista de comandos para cpan

3
JWHEAT

Em Fedora Linux ou Enterprise Linux, yum também controla as 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 correto para você.

yum install 'Perl(Chocolate::Belgian)'

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

3
Michal Ingeli

No Fedora você pode usar

# yum install foo

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

3
Bruce Alderman

Se você quiser colocar o novo módulo em um local personalizado que o seu cpan Shell não esteja configurado para usar, então, 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
2
venkrao

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

2
Chris Forever

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([email protected]){
        system("cpanm $x");
        eval "use $x";
    }
}

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

1
Ed Dunn

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

1
PW.

Simplesmente executar cpan Foo::Bar na Shell serviria ao propósito.

1
Kamal Nayan