Estou usando uma distribuição Linux personalizada em uma caixa ARM, baseada em Ångström. Como todos os pacotes que encontrei no gerenciador de pacotes estão terrivelmente desatualizados, eu reconstruí todos os softwares que eu pude; com algumas exceções, todo o software é agora a versão mais recente. Geralmente, as coisas estão funcionando bem, mas estou encontrando alguns problemas ao atualizar o software instalado.
Por exemplo, eu estava usando anteriormente o OpenSSL 1.0.2l e recentemente construí e instalei o OpenSSL 1.0.2n. O processo de compilação e instalação correu bem, mas para meu espanto, alguns aplicativos que usavam as bibliotecas compartilhadas do OpenSSL pararam de funcionar. Os que eu notei incluem curl e php. Veja um exemplo de um aplicativo afetado:
$ curl
curl: try 'curl --help' for more information
curl: relocation error: /usr/lib/libcurl.so.4: symbol SSL_COMP_free_compression_methods, version OPENSSL_1.0.0 not defined in file libssl.so.1.0.0 with link time reference
Eu construí o OpenSSL 1.0.2n (e anteriormente 1.0.2l) seguindo as instruções do Beyond Linux from Scratch ( aqui ). Isso envolve a aplicação de um arquivo de correção nos scripts ld, o que adiciona informações de versão. Todos os símbolos mencionados nas mensagens de erro nos programas afetados são adicionados pelo patch, o que me faz suspeitar que o patch quebra algo.
Descobri que posso resolver o erro reconstruindo cada programa afetado. Por exemplo, eu reconstruí o curl (que também tinha uma nova versão disponível) com a nova versão do OpenSSL instalada, e o curl funciona agora. Estou disposto a reconstruir todos os programas afetados, mas ocorreu-me que isso, em primeiro lugar, anula completamente o propósito de usar uma biblioteca compartilhada.
Este erro é introduzido pelo patch mostrado na página do BLFS? Se eu reconstruir o OpenSSL sem o patch (e reconstruir os programas que dependem do OpenSSL), isso me impedirá de precisar reconstruir programas dependentes quando houver uma atualização futura no OpenSSL?
Tags dynamic-linking linux