[SP-pm] FAQ - Primeira rodada 09/10 até 17/10

Eden Cardim edencardim at gmail.com
Mon Oct 17 14:08:15 PDT 2011


>>>>> "Leonardo" == Leonardo Ruoso <leonardo em ruoso.com> writes:

    Leonardo> Minha pergunta foi mais como uma sugestão para a
    Leonardo> FAQ. Pessoalmente, eu acredito que o melhor é usar a
    Leonardo> local::lib para as aplicações e instalar módulos via
    Leonardo> pacotes para o sistema operacional. O que é um pé-no-saco,
    Leonardo> mas ainda é mais simples que

Olha, isso é um tanto quanto controversial, mas a minha opinião é de que
boa parte dos módulos que vem empacotados nas distras são para uso em
software da distro, os poucos que vem com o intuito de servir pra
desenvolvimento costumam ficar bem pra trás na manutenção porque poucas
pessoas usam módulos perl empacotados (já está limitado aos usuários da
distro, que tende a ser menor do que o total de desenvolvedores perl) e
quem usa geralmente está querendo evitar o overhead de ter que manter a
biblioteca manualmente, e por isso nunca vai colaborar com o processo de
manutenção do pacote. Além disso, quando aparecer uma ocasião onde você
quiser instalar um módulo sem pacote, suas alternativas são:

 1 - criar (e manter) o pacote você mesmo - essa alternativa é a menos
 ruim, ao meu ver, mas tem um overhead demais pro meu gosto.
 2 - manter uma instalação híbrida - só de pensar em explicar os
 problemas com essa abordagem já me dá dor de cabeça.
 3 - ignorar tudo e deixar as instalações dos módulos não-empacotados
 pisotearem os arquivos da distro quando forem instalar versões
 atualizadas de dependências que também estão instaladas via pacotes.

Além disso, usando pacotes você não ganha as diversas vantagens de usar
sistemas como o shipit ou distzilla e tende a ficar um pouco amarrado na
distro específica onde você está desenvolvendo. Testar releases de
código também é um pé-no-saco porque precisa ficar removendo os módulos
do sistema, etc.

Bottomline: para desenvolvimento, fique longe dos pacotes.

Invés disso, use o App::cpanminus que é trivial de instalar, e que sabe
fazer instalações auto-contidas via local-lib:

    $ curl -L http://cpanmin.us | perl - -L meusmodulos --self-upgrade
    $ cpanm -L meusmodulos local::lib Modulo::Um Modulo::Dois

e no seu programa:

  use local::lib 'meusmodulos';

São tremendas as possibilidades. Por exemplo, você pode distribuir um
diretório com a sua aplicação e um subdiretório contendo a instalação de
todas as dependências. O Miyagawa tá trabalhando num sistema chamado
carton pra facilitar ainda mais esse processo.

    Leonardo> ficar criando múltiplos chroot para poder instalar módulos
    Leonardo> Perl atualizados.

Preciso atravessar a rua, me dá carona na nave espacial? :D

-- 
  Eden Cardim
  Code Monkey                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://blog.edencardim.com/            http://www.shadowcat.co.uk/servers/
http://twitter.com/#!/edenc


More information about the SaoPaulo-pm mailing list