Criando um mini-mirror do cpan com o CPAN::Mini

February 5, 2010 · Posted in Perl 

Online desde 26/10/1995, com 17365 módulos escritos por 7930 autores (até o momento da escrita deste post), o CPAN é o repositório oficial de módulos Perl. Nele podemos encontrar muitas vezes, centenas de módulos prontos para várias tarefas. Essa é uma das facilidades que fazem os programadores Perl serem tão eficientes.

No entanto, a dependência de uma conexão à internet para a instalação de novos módulos, é por vezes um empecilho para a utilização desta poderosa ferramenta. Mas como em Perl sempre há mais de uma forma de se fazer, neste post mostraremos como criar um mini-mirror do cpan para ser utilizado em ambientes onde uma conexão com a internet nem sempre é possível.

Depois de configurar o aplicativo cpan para instalar módulos localmente com a local::lib, o primeiro passo para configurar o mirror é instalar e configurar o módulo CPAN::Mini e seus aplicativos.

Existem várias formas de se configurar o minicpan. A que eu mais uso é a que é feita através de um arquivo de configuração chamado .minicpanrc que deve ser criado no diretório home do usuário. Ele possui somente duas linhas conforme abaixo:

1
2
local: ~/minicpan
remote: http://www.cpan.org

A primeira linha indica em qual diretório ficarão os arquivos do mirror, enquanto a segunda indica de onde as informações sobre os pacotes serão baixadas.

Feito isso, podemos instalar o módulo CPAN::Mini com o comando:

1
user@host:~$ cpan CPAN::Mini

Depois de instalar o módulo, executamos o comando minicpan que vai sincronizar o repositório indicado no ‘remote’ do .minicpanrc com o repositório na internet. Esta parte pode demorar entre alguns minutos e várias horas, dependendo da velocidade do seu link.

1
2
3
4
5
6
7
user@host-perl:~$ minicpan
authors/01mailrc.txt.gz ... updated
modules/02packages.details.txt.gz ... updated
modules/03modlist.data.gz ... updated
authors/id/A/AA/AAYARS/Devel-Ladybug-0.406.tar.gz ... updated
authors/id/A/AA/AAYARS/CHECKSUMS ... updated
...

A última etapa é configurar o aplicativo cpan para utilizar o nosso mirror local como primeira opção de download. Isso é feito pelo próprio prompt do cpan:

1
cpan> o conf urllist unshift file:///home/blabos/minicpan

Onde /home/blabos é o diretório home do usuário, no meu caso, blabos; e minicpan é o diretório que configuramos na opção ‘local’ do .minicpanrc.

Com esses passo simples, conseguimos construir um mini-mirror do cpan para ser utilizado em ambientes com pouco ou nenhum acesso à internet. Adicionalmente, para replicar o mirror em outras máquinas, basta copiar o diretório minicpan e adicioná-lo como opção de download para o comando cpan (última etapa descrita anteriormente).

Meus sinceros agradecimentos ao edenc que primeiro me falou a respeito do minicpan, ao Randal Schwartz que escreveu o script original do minicpan e ao Ricardo SIGNES que transformou o script do Randal em um módulo.

Se quiser saber mais a respeito, dê uma olhada no artigo original do Randal ou na documentação online do módulo.

Comments

blog comments powered by Disqus