Este artigo descreve como compilar o programa MSN-Proxy na distribuição CentOS (ou Red Hat) 5, apresentando uma solução para uma incompatibilidade entre a versão da biblioteca Libevent disponível na distribuição e a necessária para a compilação do proxy.
Primeiramente é necessário instalar os requisitos de compilação:
# yum install gcc make mysql-devel vim-enhanced
O gerenciador de pacotes Yum se encarrega de instalar as dependências adicionais necessárias a cada um dos programas acima. Obviamente, quem por ventura já tiver esses pacotes instalados, pode ignorar essa etapa.
Em seguida obteremos os pacotes-fonte da Libevent e do MSN-Proxy:
Essas são as últimas versões estáveis disponíveis no momento de escrita desse artigo. Porém, caso algum dos links falhe, ainda pode-se obter os pacotes dos sites oficiais [1][2] de cada um dos programas.
Agora deve-se criar um diretório separado para a Libevent e instalá-la nele (para sistemas x86, basta substituir o subdiretório lib64 por lib em todos os caminhos citados daqui em diante).
# mkdir /usr/local/lib64/libevent-1.4.13
# cd /usr/src
# tar -xzvf libevent-1.4.13-stable.tar.gz
# cd libevent-1.4.13-stable
# ./configure --prefix=/usr/local/lib64/libevent-1.4.13 --exec-prefix=/usr/local/lib64/libevent-1.4.13
# make
# make install
O próximo e mais importante passo é a compilação do MSN-Proxy usando essa versão da Libevent recém-instalada. Para isso, serão necessárias algumas pequenas alterações no arquivo Makefile do programa.
# cd /usr/src
# tar -xzvf msn-proxy-0.7.tar.gz
# cd msn-proxy-0.7
# vim Makefile
O arquivo deve ser editado de modo que seu conteúdo fique da seguinte forma, a partir da linha 7:
# Linux (most)
MYSQLINC=/usr/include/mysql
MYSQLLIB=/usr/lib64/mysql
# Adicionados os caminhos da Libevent mais recente
LIBEVENT14LIB=/usr/local/lib64/libevent-1.4.13/lib
LIBEVENT14INC=/usr/local/lib64/libevent-1.4.13/include
Note que as variáveis MYSQLINC, MYSQLLIB, CCFLAGS e LDFLAGS devem ser alteradas, e as variáveis LIBEVENT14LIB e LIBEVENT14INC adicionadas. Isso indica explicitamente ao compilador o caminho (de binários e cabeçalhos) da Libevent mais atual, para que o MSN-Proxy use essa versão ao invés da padrão do sistema. Os caminhos referentes à biblioteca de cliente MySQL são padrão da distribuição, mas podem ser conferidos explicitamente através do comando "mysql_config --libs --include".
Após editar e salvar o arquivo, basta compilar o programa normalmente:
# make
# make install
O último passo é criar links simbólicos para os binários dessa versão da Libevent nos locais corretos, de modo que o programa os encontre ao executar.
[1] Comentário enviado por dastyler em 29/04/2010 - 08:07h
Olá Edson,
Lembro que certa vez instalei o MSN_proxy no fedora e precisei lançar mão de procedimentos semelhantes para a instalação do MSN-Proxy devido ao memso problema, mas não consegui postar a solução aqui como voce fez.
Bom artigo!!
[2] Comentário enviado por arc em 29/04/2010 - 11:19h
Gosto muito do msn-proxy, mas tive que tirar da minha rede pois temos vendedores aqui com muitos(+ de 800) contatos. Ai o msn fica caindo toda hora, fiz testes com as versões em desenvolvimento mesmo assim não ficou bom. Alguem usa ele com + de 800 contatos e nao tem problemas???? Caso tenham por favor me digam o que fizeram para funcionar direito.
[3] Comentário enviado por manoserpa em 30/04/2010 - 09:09h
Bom dia.
Arc, eu uso ele a pouco tempo e algumas máquinas ficam caindo mesmo, não sei qual o motivo, eu estou utilizando o Emesene nessas máquina (inclusive na minha), funciona sem problemas.
Aproveitando o embalo...
Eu estou visualizando as conversas direto na base do MySQL, quando eu clico no nome do contato pelo navegador não abre a janela com a conversa dele, alguém sabe o que fazer para ler as conversas numa interface mais amigável.
[5] Comentário enviado por manoserpa em 30/04/2010 - 09:57h
Eu uso a 0.6, tive problema com a interface lenta mas resolvi com um script em php que encontrei na net, na verdade as conversas ficam por um tempo tempo lá na página, mas depois elas somem e ficam gravadas no banco, daí eu vejo direto na base.
[9] Comentário enviado por rafael.gumiero em 30/04/2010 - 15:53h
Estava tendo alguns problemas na hora de visualizar as conversas mais observei que tinha um bug quanto a isso e achei uma solução para visualização.Quem precisar me avisa que passo o procedimento e tenho realizado algumas implementações na interface do msn-proxy, quando terminar disponibilizo para o pessoal.
[12] Comentário enviado por 4l3x4ndr3 em 23/09/2010 - 17:48h
Muito bom seu artigo, mas não tive a certeza se funciona.
Devido a várias tentantivas, já estou com o msn-proxy instalado, mas precisaria desistalar ele para fazer da maneira como vc descreve.
Como posso desistala-lo?
[14] Comentário enviado por lpossamai em 29/10/2010 - 14:27h
Boa tarde.
Realizei a instalação do MSN-PROXY no centos 5.5 64 Bits.
Editei o Makefile.. Compilei.. compilei o libevent...
configurei o mysql
os arquivos de configurações..
Inicio o msn-proxy com o comando msn-proxy -b -i &
ele me mostra a seguinte tela:
[root@xxxxxxx msnproxy]# info: reading config file [/usr/local/etc/msn-proxy/msn-proxy.conf]
msn-proxy release : msn-proxy-0.7a [$Id: msn-proxy.h 112 2009-03-15 17:30:28Z loos-br $]
config file : /usr/local/etc/msn-proxy/msn-proxy.conf
default ns host : messenger.hotmail.com
default ns port : 1863
listen host : 0.0.0.0
listen port : 1863
backlog : 10
max clients : 10
max ctl clients : 10
port range begin : 25000
port range end : 30000
ctl read timeout : 5
client read timeout : 600
client write timeout : 60
server read timeout : 600
server write timeout : 60
client connect timeout: 180
[16] Comentário enviado por Estival em 26/12/2012 - 16:35h
Erro na compilação do msn-proxy, estou usando o libevent 1.4 e msn-proxy 0.7
Lembrando que fiz as alterações solicitadas no Makefile.
Meu Linux é Fedora Core 11 x86_64
#make
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c msn-proxy.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c server.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c sb.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c command.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c config.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c net-io.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c client.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c syslog.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c ns.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c mysql.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c sql.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c protocol.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c check-cmd.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c contacts.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c msg.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c p2p.c
p2p.c: In function âp2p_ack_packetâ:
p2p.c:74: warning: format â%lldâ expects type âlong long intâ, but argument 2 has type â__int64_tâ
p2p.c:74: warning: format â%lldâ expects type âlong long intâ, but argument 3 has type â__int64_tâ
p2p.c: In function âmsg_read_p2p_headerâ:
p2p.c:152: warning: suggest parentheses around operand of â!â or change â&â to â&&â or â!â to â~â
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c user.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c string.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c io.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c sig.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c fmt.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c xml.c
cc -g -Wall -O2 -pipe -I/usr/local/include -I/usr/include/mysql -I/usr/local/lib64/libevent-1.4.13/include -fno-builtin-log -c ctl.c
cc -o msn-proxy msn-proxy.o server.o sb.o command.o config.o net-io.o client.o syslog.o ns.o mysql.o sql.o protocol.o check-cmd.o contacts.o msg.o p2p.o user.o string.o io.o sig.o fmt.o xml.o ctl.o -L/usr/local/lib -L/usr/local/lib64/libevent-1.4.13/lib -levent -L/usr/lib64/mysql:/var/lib/mysql -lmysqlclient
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
make: *** [msn-proxy] Error 1
[17] Comentário enviado por edsonmarquezani em 26/12/2012 - 17:21h
Mas veja que o erro é referente à lib mysqlclient, não à libevent. Dê uma olhada se no Fedora 11 o parâmetro correto é mesmo -lmysqlclient e se você tem a lib (binário dela) instalado.