[SP-pm] perlbrew e distribuições Linux antigas

Alceu Rodrigues de Freitas Junior glasswalk3r at yahoo.com.br
Sat Jun 21 08:21:57 PDT 2014


Em 18-06-2014 13:13, Blabos de Blebe escreveu:
> Opa,
>
>> Isso me faz lembrar porque eu já sai e entrei da SP.pm várias
>> vezes...
>
> Editar o Makefile diretamente é um porre. Se vc recorrer a isso com
> sucesso merece uma medalha sim!

Hmm... pensei por um momento que você tinha usado de sarcasmo. :-)

Minhas desculpas.

> Talvez o lance das variáveis de ambiente seja uma questão de "tempos".
>
> Variáveis do tipo INCLUDE* normalmente são utilizadas para apontar para
> os headers, ou seja, os arquivos .h dos fontes do código em C.
> Normalmente eles são distribuídos em pacotes *-dev, mas no seu caso,
> estão nos fontes que você está compilando.
>
> Já LD_LIBRARY_PATH aponta para onde o ld deve olhar pra encontrar os
> binários das bibliotecas compartilhadas, normalmente *.so.
>
> As bibliotecas compartilhadas precisam ser encontradas em dois tempos
> "durante a compilação" e durante a execução.
>
> No primeiro caso, pra ser mais específico, é na etapa de link-edição,
> que acorre logo após a compilação, antes de gerar o seu executável (ou lib).
>
> A LD_LIBRARY_PATH precisa apontar pros .so que você compilou, tanto no
> momento da compilação do seu módulo (build) quanto durante a execução.
>
> Na mensagem:
>
> "Can't load
> '/home/alcjunio/.cpan/build/__Net-SSLeay-1.64-8kuViY/blib/__arch/auto/Net/SSLeay/SSLeay.__so"
>
> O erro acontece no momento em que o script de teste está tentando
> carregar o SSLeay.so que foi gerado durante o build.
>
>
> "The perl application attempted to load
> /home/alcjunio/.cpan/build/__Net-SSLeay-1.64-8kuViY/blib/__arch/auto/Net/SSLeay/SSLeay.so
> **which requires text relocation**"
>
>
> Com certa licença poética, bibliotecas compartilhadas guardam os
> endereços de seus símbolos de forma relativa. Durante o load a aplicação
> carrega o código e o coloca em endereços que ela conheça, mas que podem
> variar de execução pra execução. Tipo um IP variável, alocado via DHCP.
>
> Se não fosse assim, cada vez que eu criasse uma biblioteca, eu teria que
> me preocupar em não usar os endereços de memória que outra já use. Como
> se eu estivesse comprando um IP fixo. Isso é impraticável :)
>
> É isso que significa o "text relocation". "text" é o nome do segmento de
> memória (coisas assembly) onde fica guardada a versão executável do código.
>

Obrigado pela explicação detalhada.

> "This is a potential security problem. Most libraries do not need this
> permission. Libraries are sometimes coded incorrectly and request this
> permission."
>
> Não estou conseguindo associar o nome à pessoa nesse trecho.

O SELinux é muito criticado por ser muito complexo. Eu nunca trabalhei 
em um local onde realmente entendessem como usá-lo.

Não é a primeira vez que passo por isso. Já vi situações que eu não 
conseguia matar um processo com "kill -9" que foi criado pelo mesmo ID 
que eu estava usando!

> "The SELinux Memory Protection Tests web page explains how to remove
> this requirement. You can configure SELinux temporarily to allow
> /home/alcjunio/.cpan/build/__Net-SSLeay-1.64-8kuViY/blib/__arch/auto/Net/SSLeay/SSLeay.so
> to use relocation as a workaround, until the library is fixed."
>
> Então há um workaround, é feio, mas vai funcionar.
>

Infelizmente não vou conseguir resolver com isto. Não tenho acesso à 
root e vai ser uma luta de longos meses para conseguir mudar isto.

> Sim, eu não adicionei nada relevante que possa te ajudar e não sei como
> funcionam as configurações do SELinux mas ao pesquisar pela mensagem de
> erro no Google, encontrei esses dois links com workarounds pra fazer
> funcionar.

Pelo contrário. Já sabemos direito agora o que não funciona. :-)

> http://docs.fedoraproject.org/en-US/Fedora/13/html/SELinux_FAQ/index.html#faq-entry-unconfined_t
>
> http://www-01.ibm.com/support/docview.wss?uid=swg21268209
>
> Meu chute, e é só um chute, porque repito, não sei como funcionam as
> configurações do SELinux, é que ele não deixa uma aplicação carregar uma
> biblioteca compartilhada que esteja fora de diretórios padrão.
>

Aqui tem mais informações:

http://www.akkadia.org/drepper/selinux-mem.html

Vou tentar ver de daí consigo tirar algo que me ajude. Se der certo, 
basta eu começar a carregar o Perlbrew junto com o OpenSSL compilado. O 
Strawberry Perl já faz isto em ambiente MS Windows.

[]'s
Alceu



More information about the SaoPaulo-pm mailing list