
A tarefa de compilar o código-fonte do servidor web Apache frequentemente apresenta desafios.
Não é comum que o processo de compilação do Apache seja bem-sucedido na primeira tentativa em um novo servidor.
Isso se deve ao fato de que ele exige várias dependências, e a ausência ou incompatibilidade de alguma delas pode levar a um tempo considerável gasto na resolução de problemas.
Durante a instalação do Apache 2.4.6 em um novo servidor Linux 6.4, deparei-me com o seguinte erro:
exports.c:1929: error: redefinição de 'ap_hack_apr_allocator_create' exports.c:921: note: definição anterior de 'ap_hack_apr_allocator_create' estava aqui exports.c:1930: error: redefinição de 'ap_hack_apr_allocator_destroy' exports.c:922: note: definição anterior de 'ap_hack_apr_allocator_destroy' estava aqui exports.c:1931: error: redefinição de 'ap_hack_apr_allocator_alloc' exports.c:923: note: definição anterior de 'ap_hack_apr_allocator_alloc' estava aqui exports.c:1932: error: redefinição de 'ap_hack_apr_allocator_free' exports.c:924: note: definição anterior de 'ap_hack_apr_allocator_free' estava aqui exports.c:1933: error: redefinição de 'ap_hack_apr_allocator_owner_set' exports.c:925: note: definição anterior de 'ap_hack_apr_allocator_owner_set' estava aqui exports.c:1934: error: redefinição de 'ap_hack_apr_allocator_owner_get' exports.c:926: note: definição anterior de 'ap_hack_apr_allocator_owner_get' estava aqui exports.c:1935: error: redefinição de 'ap_hack_apr_allocator_max_free_set' exports.c:927: note: definição anterior de 'ap_hack_apr_allocator_max_free_set' estava aqui exports.c:1937: error: redefinição de 'ap_hack_apr_allocator_mutex_set' exports.c:929: note: definição anterior de 'ap_hack_apr_allocator_mutex_set' estava aqui exports.c:1938: error: redefinição de 'ap_hack_apr_allocator_mutex_get' exports.c:930: note: definição anterior de 'ap_hack_apr_allocator_mutex_get' estava aqui exports.c:1944: error: redefinição de 'ap_hack_apr_atomic_init' exports.c:936: note: definição anterior de 'ap_hack_apr_atomic_init' estava aqui exports.c:1945: error: redefinição de 'ap_hack_apr_atomic_read32' exports.c:937: note: definição anterior de 'ap_hack_apr_atomic_read32' estava aqui exports.c:1946: error: redefinição de 'ap_hack_apr_atomic_set32' exports.c:938: note: definição anterior de 'ap_hack_apr_atomic_set32' estava aqui exports.c:1947: error: redefinição de 'ap_hack_apr_atomic_add32' exports.c:939: note: definição anterior de 'ap_hack_apr_atomic_add32' estava aqui exports.c:1948: error: redefinição de 'ap_hack_apr_atomic_sub32' exports.c:940: note: definição anterior de 'ap_hack_apr_atomic_sub32' estava aqui exports.c:1949: error: redefinição de 'ap_hack_apr_atomic_inc32' exports.c:941: note: definição anterior de 'ap_hack_apr_atomic_inc32' estava aqui exports.c:1950: error: redefinição de 'ap_hack_apr_atomic_dec32' exports.c:942: note: definição anterior de 'ap_hack_apr_atomic_dec32' estava aqui exports.c:1951: error: redefinição de 'ap_hack_apr_atomic_cas32' exports.c:943: note: definição anterior de 'ap_hack_apr_atomic_cas32' estava aqui exports.c:1952: error: redefinição de 'ap_hack_apr_atomic_xchg32' exports.c:944: note: definição anterior de 'ap_hack_apr_atomic_xchg32' estava aqui exports.c:1953: error: redefinição de 'ap_hack_apr_atomic_casptr' exports.c:945: note: definição anterior de 'ap_hack_apr_atomic_casptr' estava aqui exports.c:1954: error: redefinição de 'ap_hack_apr_atomic_xchgptr' exports.c:946: note: definição anterior de 'ap_hack_apr_atomic_xchgptr' estava aqui exports.c:1960: error: redefinição de 'ap_hack_apr_dso_load' exports.c:1085: note: definição anterior de 'ap_hack_apr_dso_load' estava aqui exports.c:1961: error: redefinição de 'ap_hack_apr_dso_unload' exports.c:1086: note: definição anterior de 'ap_hack_apr_dso_unload' estava aqui exports.c:1962: error: redefinição de 'ap_hack_apr_dso_sym' exports.c:1087: note: definição anterior de 'ap_hack_apr_dso_sym' estava aqui exports.c:1963: error: redefinição de 'ap_hack_apr_dso_error' exports.c:1088: note: definição anterior de 'ap_hack_apr_dso_error' estava aqui exports.c:1969: error: redefinição de 'ap_hack_apr_env_get' exports.c:1094: note: definição anterior de 'ap_hack_apr_env_get' estava aqui exports.c:1970: error: redefinição de 'ap_hack_apr_env_set' exports.c:1095: note: definição anterior de 'ap_hack_apr_env_set' estava aqui exports.c:1971: error: redefinição de 'ap_hack_apr_env_delete' exports.c:1096: note: definição anterior de 'ap_hack_apr_env_delete' estava aqui exports.c:1976: error: redefinição de 'ap_hack_apr_strerror' exports.c:1101: note: definição anterior de 'ap_hack_apr_strerror' estava aqui export.c:1981: error: redefinição de 'ap_hack_apr_stat' exports.c:1106: note: definição anterior de 'ap_hack_apr_stat' estava aqui exports.c:1982: error: redefinição de 'ap_hack_apr_dir_open' exports.c:1107: note: definição anterior de 'ap_hack_apr_dir_open' estava aqui exports.c:1983: error: redefinição de 'ap_hack_apr_dir_close' exports.c:1108: note: definição anterior de 'ap_hack_apr_dir_close' estava aqui
Se você está enfrentando um erro semelhante, a solução que apresento pode ser útil.
Solução
Após analisar diversos parâmetros, constatei que esse problema surge quando a versão do apr-util é anterior a 1.4.1.
- Verifique a versão do seu apr-util. Se for inferior a 1.4.1, você precisará instalar a versão 1.4.1 ou superior.
- Baixe o código-fonte do apr-util em: http://mirror.nus.edu.sg/apache/apr/
- Extraia o arquivo que você acabou de baixar.
Para compilar e instalar, siga os seguintes passos:
./configure make make install
Por padrão, ele será instalado em /usr/local/apr/bin/apu-1-config.
Agora, você poderá compilar o Apache utilizando o apr-util recém-instalado, e o processo deverá ocorrer sem problemas.
./configure --with-apr-util=/usr/local/apr/bin/apu-1-config
Essa solução funcionou para mim, e espero que funcione para você também!
Gostou do artigo? Compartilhe com seus colegas!