2015-10-05, por Nuno Carvalho smash@cpan.org
Gerir várias versões do Perl e/ou um repositório de módulos pode dar origem a tarefas ou workflows complexos. Felizmente existem uma série de ferramentas que podem auxiliar nestes processos, por exemplo:
Utilizando uma (ou várias) combinações destas ferramentas é possível usar vários versões de módulos/versões de Perl. No entanto é preciso que o programador tenha conhecimento sobre estas ferramentas, e por vezes uma série de instruções (ou lista de comandos) de como fazer o setup necessário para correr uma aplicação podem interferir com instalações de sistema ou gerais do utilizador. Outras vezes o programador não quer investir tempo a aprender a usar este tipo de ferramentas para efectuar simplesmente um teste (ou debug).
O objectivo do p5stack
é de uma forma expedita e com uma curva de aprendizagem
mínima permitir automagicamente configurar um contexto para executar uma
aplicação localmente (ao nível da directoria).
Um projecto muito simples:
$ ls -A
dist.ini ex1
que contém um script ex1
:
$ cat ex1
#!/usr/bin/perl
use Acme::123;
Acme::123->new->printnumbers;
que tem uma dependência (o módulo Acme::123
), como descrito na simples
configuração do dzil:
$ cat dist.ini
name = ex1
[Prereqs]
Acme::123 = 0
Portanto para executar esta aplicação é necessário um interpretador
de Perl, e a lista de módulo necessário. Podemos preparar a directoria
deste projecto com tudo que é necessário para correr a aplicação com
o p5stack, executado o comando p5stack setup
na própria directoria:
$ p5stack setup
[p5stack - Sep 28 23:58:19] Hammering setup ...
(...)
O setup
chamado sem qualquer configuração vai utilizar o Perl de sistema
encontrado, e vai criar uma directoria .local
que vai conter todos
os módulos necessários para executar a aplicação:
$ ls -A
.local dist.ini ex1
Sem fazer qualquer alteração aos módulos de sistema. Depois é possível
utilizar o p5stack para correr a aplicação usando o comando
p5stack perl
que arranca o interpretador de Perl, com a configuração
necessária para este contexto:
$ p5stack perl ex1
one
two
three
(...)
É possível definir um ficheiro de configuração para usar outras versões de Perl, ou outras formas para inferir a lista de dependências. Por exemplo o seguinte ficheiro de configuração:
$ cat p5stack.yml
---
perl: 5.20.3
deps: cpanfile
na directoria do projecto ia fazer com que o setup instalasse um Perl
(da versão definida) na $HOME do utilizador, os módulos necessários iriam
ser na mesma instalados em .local
, mas a diferença é que neste caso a
lista de dependências seria calculada com base no ficheiro cpanfile
. O
importante é que tudo é feito sem interferir com outras instalações do
Perl (ou perbrew) e que os módulos são sempre locais ao projecto.
Mais informações sobre a ferramenta (ainda em desenvolvimento) na página do projecto (pull requests are welcome).