<p dir="ltr">Então, o Alien é para o processo inverso, onde você vai executar o cpan nome::seu:módulo aí o seu modelo que ficará responsável por instalar as deps binárias (o que faz necessário a maquina ter, no mínimo, make e um compilador). </p>

<p dir="ltr">É trabalhoso demais instalar as deps, é mais simples gerar o binário para a distribuição desejada, geralmente. </p>
<p dir="ltr">É um mundo complicado esse que vivemos! <br>
On Aug 8, 2014 11:01 PM, "Samir Cury" <<a href="mailto:samircurys@gmail.com">samircurys@gmail.com</a>> wrote:<br>
><br>
> Obrigado pelas respostas, bastante informacao util.<br>
><br>
> Achei bem interessante o lance do Alien. Vou olhar com mais calma depois. A principio, resolveria o problema.<br>
><br>
> Apesar de concordar com o Blabos em varios pontos, ainda acho que pra quem nao liga ou nao se importa com Perl, CPAN, etc, vai simplesmente dizer "ah, esse troco nao funciona". E exatamente isso que quero evitar, atitude que infelizmente tenho visto cada vez mais devido as tendencias da galera considerar varias coisas como caixas pretas, ao inves de perder 3~5 min descobrindo o problema.<br>

><br>
> Sobre RPMs, chega a ser quase trivial, uma vez que se acostuma. Acho que o que vai dar mais trabalho e a burocracia de incluir o RPM no repositorio Contrib. Lembro que o Debian parecia uma sociedade secreta, so entrava apadrinhado ou depois de ralar muito, algo assim.<br>

><br>
> O pacote na distro parece o mais limpo. E como so me importo em dar suporte ao CentOS (e talvez Debian) pode ser o caminho. Se acontecer algo com o Alien aviso quanto trabalho deu. Parece ser a solucao mais interessante porque o CPAN funcionaria sozinho.<br>

><br>
> Abs<br>
><br>
><br>
><br>
><br>
> 2014-08-08 11:53 GMT-07:00 Blabos de Blebe <<a href="mailto:blabos@gmail.com">blabos@gmail.com</a>>:<br>
><br>
>> Opa,<br>
>><br>
>> > Mas me deixa nervoso ter algo no CPAN que nao seria instalado perfeitamente pelo<br>
>> > CPAN na distribuicao padrao. Tenho quase certeza que o maximo que posso fazer<br>
>> > e deixar um warning gigante no POD, mas queria conferir com voces.<br>
>><br>
>> Isso (nervoso) não faz sentido e eu vou tentar clarificar o porquê.<br>
>><br>
>> Vários módulos são wrappers em Perl para bibliotecas que não fazem parte da distribuição padrão, portanto, não faz sentido, querer o módulo, sem ter a biblioteca.<br>
>><br>
>> Aliás, a biblioteca não estar instalada na distribuição padrão é análoga ao módulo não estar no core do Perl.<br>
>><br>
>> Então é natural que alguns módulos não core, esperem ter disponível uma biblioteca "não core" da distribuição.<br>
>><br>
>> lalala-lib X lalala-lib-dev<br>
>> ==================<br>
>><br>
>> Quando essa integração com bibliotecas externas acontece, é necessário um pouco de cola em XS, que nada mais é do que um "C com esteróides".<br>
>><br>
>> Esse XS precisa ser compilado durante a instalação do módulo. Por quê? Porque sendo código C que vai virar binário, ele precisa ser exatamente compatível com os binários específicos (*.so/*.a) que você você tem na sua máquina. Coisas de build/linking, podemos detalhar mais em outra ocasião.<br>

>><br>
>> Para compilar o XS, você vai precisar dos arquivos de cabeçalho em C (*.h), bem como do compilador e ferramentas conjuntas. Esses arquivos avisam pro compilador, qual a assinatura das funções da lib externa que você está usando. Como eles são usados somente na compilação, eles são distribuídos em separado em pacotes lalala-lib-dev.<br>

>><br>
>> Já o seu módulo, depois de compilado, vai usar os binários da biblioteca e não vai estar nem aí mais pros cabeçalhos.<br>
>><br>
>> O triste aqui é que quando você está falando de pacotes que são distribuídos de forma binária, vc pode pré-compilar e empacotar as libs sem os cabeçalhos. Mas quando você está falando de módulo Perl que precisa rodar em mais de 90 arquiteturas, o que for em XS precisa ser compilado especificamente para aquela máquina.<br>

>><br>
>> O que normalmente acontece é que os módulos mais famosos costumam ter um padrinho, que os compila para as principais arquiteturas onde a distribuição linux roda e por isso vc consegue instala-los com yum ou apt-get.<br>

>><br>
>> Como isso dá um trabalho do cacete, nem todos os módulos tem pacotes da distro, e normalmente eles não são as versões mais atualizadas.<br>
>><br>
>> Lembro-me que uma vez o Solli tinha pensado em fazer algo a respeito, mas não sei o que deu dessa história. Só sei que o trabalho pra manter os milhares de módulos do CPAN com um pacote atualizado pra cada distro e pra cada arquitetura deve ser gigantesco.<br>

>><br>
>> Samir,<br>
>><br>
>> Acredito que pro seu caso, como é só um módulo, vc possa montar um pacote para principais distros/arquiteturas colocando as libs externas como dependência. Talvez nem dê tanto trabalho assim.<br>
>><br>
>> Assim, quando alguém der apt-get seu-modulo, o próprio apt-get vai baixar as bibliotecas necessárias, sem precisar dos lalala-lib-dev, já que ele já vai estar compilado.<br>
>><br>
>> Ou então usar a sugestão do Cron mesmo.<br>
>><br>
>> Essa eu nunca tentei. Ok, nunca tentei nenhuma das duas :)<br>
>><br>
>> Tá aí um bom tema para uma apresentação num ET ou YAPC da vida.<br>
>><br>
>><br>
>><br>
>> []'s<br>
>><br>
>><br>
>> 2014-08-08 15:28 GMT-03:00 Renato Santos <<a href="mailto:renato.cron@gmail.com">renato.cron@gmail.com</a>>:<br>
>><br>
>>> Hm<br>
>>> acho que você procura algo sobre isso:<br>
>>> <a href="https://metacpan.org/pod/Alien">https://metacpan.org/pod/Alien</a><br>
>>><br>
>>><br>
>>> 2014-08-08 15:14 GMT-03:00 Samir Cury <<a href="mailto:samircurys@gmail.com">samircurys@gmail.com</a>>:<br>
>>>><br>
>>>> Perlssoal,<br>
>>>><br>
>>>> Estou testando como um modulo que escrevi instala em um CentOS 6 puro, para que no fim eu me livre do selo "works on my machine".<br>
>>>><br>
>>>> Percebi que o CPAN vai sofrer um pouco se nao houver "expat-devel" e "gcc" instalados no sistema. Pode-se argumentar que e fora do escopo do CPAN, resolver problemas como este.<br>
>>>><br>
>>>> O que me faz sentir falta do Slackware, que ja vinha bem completo e era so alegria.<br>
>>>><br>
>>>> O que pensei em fazer e um RPM para o Fedora/CentOS que contem estas dependencias. Beleza, dai o cara pode usar yum install perl-package-name ou yum install 'perl(Package::Name)'.<br>
>>>><br>
>>>> Mas me deixa nervoso ter algo no CPAN que nao seria instalado perfeitamente pelo CPAN na distribuicao padrao. Tenho quase certeza que o maximo que posso fazer e deixar um warning gigante no POD, mas queria conferir com voces.<br>

>>>><br>
>>>> Se precisarem, o modulo e HTCondor::Queue::Parser. Por acidente achei o report no CPAN Testers, que parece bem tranquilo :<br>
>>>><br>
>>>> <a href="http://www.cpantesters.org/distro/H/HTCondor-Queue-Parser.html?oncpan=1&distmat=1&version=0.04">http://www.cpantesters.org/distro/H/HTCondor-Queue-Parser.html?oncpan=1&distmat=1&version=0.04</a><br>

>>>><br>
>>>> Talvez o ambiente deles ja resolve esses problemas. Mas por perfeccionismo quero que o modulo instale sem problemas no CentOS padrao.<br>
>>>><br>
>>>> Abracos,<br>
>>>> Samir<br>
>>>><br>
>>>><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> Rio-pm mailing list<br>
>>>> <a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
>>>> <a href="http://mail.pm.org/mailman/listinfo/rio-pm">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> -- <br>
>>> Saravá,<br>
>>> Renato CRON<br>
>>> <a href="http://www.renatocron.com/blog/">http://www.renatocron.com/blog/</a><br>
>>> @renato_cron<br>
>>><br>
>>> _______________________________________________<br>
>>> Rio-pm mailing list<br>
>>> <a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
>>> <a href="http://mail.pm.org/mailman/listinfo/rio-pm">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> Rio-pm mailing list<br>
>> <a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
>> <a href="http://mail.pm.org/mailman/listinfo/rio-pm">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
><br>
><br>
><br>
> _______________________________________________<br>
> Rio-pm mailing list<br>
> <a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
> <a href="http://mail.pm.org/mailman/listinfo/rio-pm">http://mail.pm.org/mailman/listinfo/rio-pm</a><br>
</p>