Eu recebo este erro:
Can't locate Foo.pm in @INC
Existe uma maneira mais fácil de instalá-lo do que baixar, descompactar, criar etc.?
cpan
.
Eu recebo este erro:
Can't locate Foo.pm in @INC
Existe uma maneira mais fácil de instalá-lo do que baixar, descompactar, criar etc.?
cpan
.
Respostas:
No Unix :
Normalmente você inicia o cpan no seu shell:
# cpan
e tipo
install Chocolate::Belgian
ou em forma abreviada:
cpan Chocolate::Belgian
No Windows :
Se você estiver usando o ActivePerl no Windows, o PPM (Perl Package Manager) possui praticamente a mesma funcionalidade do CPAN.pm.
Exemplo:
# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart
consulte Como instalo os módulos Perl? nas perguntas frequentes do CPAN
Muitas distribuições entregam muitos módulos perl como pacotes.
apt-cache search 'perl$'
pacman -Ss '^perl-'
dev-perl
Você sempre deve preferi-los, pois se beneficia das 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 constrói / instala o módulo a partir do CPAN e cria um pacote Gentoo ( ebuild ) para você.
ppm
usa hífens -
porque você especifica a distribuição que deseja instalar, o que é muito mais honesto. Por exemplo, se você usa cpan
a instalação LWP
, LWP::Simple
ou LWP::UserAgent
ela instalará a distribuição libwww-perl
para você. A maioria das distribuições contém um único módulo com um nome equivalente, mas existem várias exceções como essa
Experimente o App :: cpanminus :
# cpanm Chocolate::Belgian
É ótimo apenas para instalar coisas. Ele não fornece 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, digite:
# cpan App::cpanminus
para instalá-lo.
Também é possível instalá-lo sem usar o cpan. O procedimento básico de inicialização é,
curl -L http://cpanmin.us | perl - --sudo App::cpanminus
Para mais informações, acesse a página App :: cpanminus e consulte a seção sobre instalação.
cpan
para instalar App::cpanminus
é um pouco estranho. As instruções normais de instalação envolvem um procedimento de inicialização para baixar uma parte do cpanmin.us e usá-lo para instalar o restante. Isso evita a configuração cpan
e a criação de um .cpan
diretório (posteriormente) inútil .
cpanminus
partir do terminal. Acho cpanm
melhor do que cpan
porque ele não coloca os logs de erros na tela, mas os armazena em arquivos de log temporários e fornece o caminho em caso de erros.
Observo algumas pessoas sugerindo uma execução cpan no sudo. Isso costumava ser necessário para instalar no diretório do sistema, mas as versões modernas do shell do CPAN permitem que você o configure para usar o sudo apenas para instalação. Isso é muito mais seguro, pois significa que os testes não são executados como raiz.
Se você possui um shell CPAN antigo, basta instalar o novo cpan ("install CPAN") e, quando recarregar o shell, ele deverá solicitar que você configure essas novas diretivas.
Atualmente, 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 o Perl de morango . Esta é uma versão do Perl que vem com um shell de CPAN pré-configurado, além de um compilador. Ele também inclui alguns módulos Perl difíceis de compilar com suas dependências externas da biblioteca C, principalmente XML :: Parser. Isso significa que você pode fazer o mesmo que qualquer outro usuário do Perl quando se trata de instalar módulos, e as coisas tendem a "simplesmente funcionar" com muito mais frequência.
install CPAN
de onde? $sudo apt-get install cpan
?
App::cpanminus
, é uma alegria usá-lo. Philip Potter sugere isso em sua resposta aqui e você pode tentar este Chas. Owens responde .
Se você está no Ubuntu e deseja instalar o módulo perl pré-empacotado (por exemplo, geo :: ipfree), tente o seguinte:
$ apt-cache search perl geo :: ipfree libgeo-ipfree-perl - Um país de consulta do módulo Perl do endereço IP $ 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 você deseja instalar e deixar que funcione.
$prompt> cpan Foo::Bar
Se você não fornecer argumentos, ele iniciará o shell CPAN.pm. Isso funciona no Unix, Mac e deve funcionar bem no Windows (especialmente no 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 novos que o fornecido com o CPAN.pm e o 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.
Veja também Sim, mesmo você pode usar o CPAN . Ele mostra como você pode usar o CPAN sem ter acesso root ou sudo.
Otto fez uma boa sugestão . Isso funciona para o Debian também, assim como qualquer outro derivado do Debian. A parte 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
Isso lhe dará um pacote deb que você pode instalar para obter o 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, serão colocados no local de sua distribuição preferido. Se a distro sair com um pacote oficial para uma versão mais recente do Some :: Random :: Module, ela será automaticamente instalada quando você atualizar o apt.
Já respondi e aceitei a resposta - mas mesmo assim:
IMHO, a maneira mais fácil de instalar os módulos CPAN (em sistemas como o Unix e sem ter idéia 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 demorar alguns 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
, também terá acesso ao CPANPLUS.pm
que é semelhante, CPAN.pm
mas melhor.
E, é claro, está disponível CPAN
para pessoas que ainda usam versões mais antigas do Perl. Por que nao tentar:
$ cpan CPANPLUS
Muitas vezes acontece que o comando cpan install falha com a mensagem "make test retornou um status ruim, não será instalado sem força"
Nesse caso, a seguir é 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á empacotada; portanto, a instalação é muito mais rápida do que a maioria dos outros sistemas que precisam compilar.
Para instalar Foo::Bar
em um prompt de comando, por exemplo, geralmente você apenas faz:
sudo apt-get install libfoo-bar-perl
Infelizmente, nem todos os módulos seguem essa convenção de nomenclatura.
Use o comando cpan como cpan Modulename
$ cpan HTML::Parser
Para instalar dependências, siga as instruções 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
2 maneiras que eu conheço:
USANDO PPM:
Com Windows (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. Digite ajuda para todos os comandos
USANDO CPAN:
você também pode usar o CPAN assim ( * nix systems ):
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 o cpan
No Fedora você pode usar
# yum install foo
desde que o Fedora possua um pacote existente para o módulo.
Em Fedora Linux
ou Enterprise Linux
, yum
também faixas perl dependências da biblioteca. 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-belga, ou mesmo pacote ChocolateFactory)
Se você deseja colocar o novo módulo em um local personalizado que seu shell cpan não está configurado para usar, talvez seja útil o seguinte.
#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 e usar yum install xxx
para instalar.
Solução segura
Muitas respostas mencionam o uso do cpan
utilitário (que usa CPAN.pm
) sem uma palavra sobre segurança. Por padrão, a CPAN
versão 2.27 e anterior configura urllist
para usar um URL http (ou seja, http://www.cpan.org/ ), que permite ataques MITM, portanto, é inseguro. É o que é usado para baixar os CHECKSUMS
arquivos, para que ele precise ser alterado para um URL seguro (por exemplo, https://www.cpan.org/ ).
Portanto, depois de executar o cpan e aceitar a configuração padrão, é necessário modificar o MyConfig.pm
arquivo gerado (o caminho completo é gerado) da seguinte maneira. Substituir
'urllist' => [q[http://www.cpan.org/]],
de
'urllist' => [q[https://www.cpan.org/]],
Nota: https não é suficiente; você também precisa de um site em que possa confiar. Portanto, tenha cuidado se quiser escolher algum espelho arbitrário.
Então você pode usar cpan
da maneira usual.
Meu relatório de erros no site rt.cpan.org sobre o URL não seguro.
https://www.cpan.org/
).
Simplesmente executar cpan Foo::Bar
no shell serviria ao propósito.
Parece que você já recebeu sua resposta, mas imaginei que participaria. Isto é o que 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.