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

=begin disclaimer
  Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer

Responder a