CentOS 6 - Tornar o sistema ciente dos caminhos de libs personalizados e dos links básicos ausentes

3

Estou tentando compilar o libmemcached (1.0.7) no CentOS6 e continuo recebendo o seguinte aviso:

...
checking for event.h... no
configure: WARNING: Unable to find libevent
...

Eu manualmente compilei o libevent (2.0.19) e o construí usando a seguinte linha de configuração:

OPTIONS="--prefix=/usr/local/_custom/app/libevent"

Tudo compilado e instalado corretamente, mas não consegui descobrir como tornar o sistema ciente de que os arquivos lib estão no /usr/local/_custom/app/libevent/lib dir. Eu me deparei com um artigo e li que eu posso tornar o sistema ciente do que é costume caminhos, adicionando um arquivo personalizado ao diretório /etc/ld.so.conf.d/ :

# /etc/ld.so.conf.d/customApp.conf
/usr/local/_custom/app/libevent/lib

Em seguida, emiti o comando ldconfig e consegui confirmar que libevent foi incluído ao emitir este comando:

ldconfig -p | ack -i libevent

Vendo que o libevent agora estava incluído na saída do ldconfig, imaginei que seria capaz de compilar o libmemcached e satisfazer o aviso acima mencionado. Infelizmente isso não aconteceu. Então, dei outra olhada na saída ldconfig e notei isso:

libevent_pthreads-2.0.so.5 (libc6,x86-64) => /usr/local/_custom/app/libevent/lib/libevent_pthreads-2.0.so.5
libevent_openssl-2.0.so.5 (libc6,x86-64) => /usr/local/_custom/app/libevent/lib/libevent_openssl-2.0.so.5
libevent_extra-2.0.so.5 (libc6,x86-64) => /usr/local/_custom/app/libevent/lib/libevent_extra-2.0.so.5
libevent_core-2.0.so.5 (libc6,x86-64) => /usr/local/_custom/app/libevent/lib/libevent_core-2.0.so.5
libevent-2.0.so.5 (libc6,x86-64) => /usr/local/_custom/app/libevent/lib/libevent-2.0.so.5

Não há referências aos links de base, por exemplo, esperaria ver links para esses ( ls -la /usr/local/_custom/app/libevent/lib ):

libevent.so -> libevent-2.0.so.5.1.7
libevent_openssl.so -> libevent_openssl-2.0.so.5.1.7
libevent_core.so -> libevent_core-2.0.so.5.1.7

Ou estou fazendo algo errado ou o sistema ainda não sabe onde procurar para encontrar libevent.so .

- Atualização 1 -

Eu não consegui obter o libmemcached para compilar sem o aviso de aviso, mesmo depois de tentar compilar usando o seguinte comando configure:

./configure --prefix=/usr/local/_custom/app/libmemcached CFLAGS="-I/usr/local/_custom/app/libevent/include" LDFLAGS="-L/usr/local/_custom/app/libevent/lib"

Eu pensei com certeza que isso funcionaria porque estou passando diretamente os diretórios include e lib para o comando configure. Mas isso não aconteceu.

    
por Mike Purcell 11.05.2012 / 02:48

5 respostas

1

Eu tive o mesmo problema e estava prestes a desistir do libmemcached quando percebi que o sinalizador de configuração deveria ser

CPPFLAGS="-I/usr/local/_custom/app/libevent/include"

em vez de

CFLAGS="-I/usr/local/_custom/app/libevent/include"
    
por 22.08.2012 / 00:20
4

Desculpe pelo meu primeiro inglês. meu os: CentOS 6.3 mini sem desktop x86_64, eu não tenho yum instalar libevent Eu encontrei o mesmo problema muitas vezes em diferentes ambientes Aqui está o meu processo de instalação do libevent:

tar zxvf libevent-2.0.20-stable.tar.gz
cd libevent-2.0.20-stable
./configure --prefix=/usr/local/libevent
make
make install

antes da minha instalação libmemcached-1.0.10 eu tentei

./configure --prefix=/usr/local/libmemcached --with-lib-prefix=/usr/local/libevent --with-memcached=/usr/local/bin/

e

LIBEVENT_CPPFLAGS=/usr/local/libevent/include
LIBEVENT_LDFLAGS=/usr/local/libevent/lib 

o problema também aconteceu. então eu faço algum link como aqui:

ln -s /usr/local/libevent/include/* /usr/include/
ln -s /usr/local/libevent/lib/libevent* /usr/lib64/

está feito! Eu acho que libmemcached localizar libevent.so e event.h tem algum código rígido. desejo que minha solução possa ajudar você.

    
por 10.10.2012 / 13:43
2

Eu sugeriria instalar o pacote libevent-devel no sistema. Isso fornecerá o arquivo de cabeçalho listado no erro que você postou, mas a versão pode ser mais antiga (1.4.13-1) do que a que você precisa para o seu libmemcached .

Analisando sua sequência, eu recomendaria remover o arquivo config.cache no diretório libmemcached source e, em seguida, executar novamente o ./configure para libmemcached . Isso deve permitir que o processo reconheça as alterações feitas nos caminhos de pesquisa da biblioteca.

    
por 11.05.2012 / 04:38
0

Depois de falar com alguns caras experientes do Sysadmin do trabalho, optei por apenas fazer um yum install memcached . Como no CentOS, um dos trade-offs é trabalhar com versões mais antigas de apps / libs, mas os mantenedores do CentOS vão fazer backport de correções de segurança, então eu decidi usar a versão original e poupar um pouco de dor de cabeça.

    
por 01.06.2012 / 00:21
0

Bem, eu não tenho uma resposta adequada, mas notei quando meu tmux recém-compilado no CentOS me disse

tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

Eu tentei isso e funcionou:

LD_LIBRARY_PATH=/usr/local/lib tmux

Não tenho certeza de qual é a maneira canônica / padrão de configurar o LD_LIBRARY_PATH do sistema, mas ele não parece ser "horrível" se eu o coloquei no bashrc / zshrc.

Editar: Ah, aqui é uma resposta que elucida a maneira de informar ao seu sistema onde as bibliotecas moram.

    
por 19.07.2013 / 02:56

Tags