Instalando Erlang e CouchDB no Mac OS X

29 de Janeiro de 2009

Estou trabalhando em um projeto em Erlang e CouchDB. Então resolvi fazer este guia, mostrando como instalá-los no Mac OS X Leopard.

Antes de começar, certifique-se que você tem o XCode devidamente instalado!

Instalando o Erlang

Instalar o Erlang é, de longe, a parte mais fácil deste guia. Basta baixar o código-fonte e compilar com os comandos abaixo.

cd /tmp
wget -c http://www.erlang.org/download/otp_src_R12B-5.tar.gz 
tar -xzf otp_src_R12B-5.tar.gz 
cd opt_src_R12B-5 
./configure --prefix=/usr/local --enable-smp-support --enable-hipe  --enable-darwin-universal --enable-threads
make 
sudo make install
cd ..

Para testar, execute o comando which.

$ which erl
/usr/local/bin/erl

Instalando as dependências do CouchDB

O primeiro passo é instalar o ICU (International Components for Unicode). Execute os comandos abaixo e você deve instalá-lo sem dificuldades.

wget http://download.icu-project.org/files/icu4c/4.0.1/icu4c-4_0_1-src.tgz
tar xvf icu4c-4_0_1-src.tgz
cd icu/source
./configure --prefix=/usr/local 
make
sudo make install
cd ../..

Depois, você precisará instalar o SpiderMonkey, Javascript engine da Mozilla Foundation. É ele quem torna a tarefa de instalação do CouchDB complicada. Baixe e extraia o código com os comandos abaixo.

wget ftp://ftp.mozilla.org/pub/mozilla.org/js/js-1.7.0.tar.gz
tar xvf js-1.7.0.tar.gz
cd js/src

Agora, exporte algumas variáveis de ambiente.

export XCFLAGS="-fno-common"
export XMKSHLIBOPTS="-dynamic -undefined suppress -flat_namespace"
export OTHER_LIBS="-L/usr/lib/gcc/i686-apple-darwin9/4.0.1/ -lgcc"

Para compilar o SpiderMonkey, execute o comando make.

make -f Makefile.ref

Agora, é preciso copiar os arquivos gerados para o diretório /usr/local.

make -f Makefile.ref export
sudo cp ../../dist/bin/js /usr/local/bin/
sudo cp ../../dist/lib/libjs.* /usr/local/lib/
sudo cp ../../dist/include/* /usr/local/include/
cd ../..

Instalando o CouchDB

Finalmente podemos instalar o CouchDB.

wget http://www.apache.org/dist/incubator/couchdb/0.8.1-incubating/apache-couchdb-0.8.1-incubating.tar.gz
tar xvf apache-couchdb-0.8.1-incubating.tar.gz
cd apache-couchdb-0.8.1-incubating
./configure --prefix=/usr/local 
make
sudo make install

Você pode ver que o CouchDB foi instalado com o comando which.

$ which couchdb 
/usr/local/bin/couchdb

Para iniciar o CouchDB, execute o comando sudo couchdb -b. Você pode acessar o endereço http://localhost:5984 para ver se ele está funcionando; uma mensagem como esta deverá aparecer:

{"couchdb":"Welcome","version":"0.8.1-incubating"}

Para parar o CouchDB, execute o comando sudo couchdb -d.

E para finalizar...

Se você está interessado em aprender Erlang, acompanhe este projeto no Github; são as anotações que estou fazendo enquanto leio o livro Programming Erlang: Software for a Concurrent World.

NOTA: Não adianta sugerir MacPorts ou Fink; eu simplesmente não gosto deles!

Comentários #

#1 Tapajós disse:
29 Jan 09, 07:22PM

Para testar é uma boa acessar a url http://localhost:5984/_utils e fazer umas brincadeiras. :-)

#2 Nando Vieira disse:
29 Jan 09, 07:32PM

Boa Tapa! ;)

#3 Dirceu Pauka Jr. disse:
29 Jan 09, 07:52PM

Instala o do trunk ae! O jchris não resistiu e já começou a falar em req/sec (ou seja, fazer otimizações) - http://twitter.com/jchris/status/1145957437.

Estou no 0.8.1 e usando no Ruby por HTTP, mas se você está usando no Erlang, try that at home :)

#4 Lucas Húngaro disse:
29 Jan 09, 08:00PM

Ou:

sudo port install erlang +smp +no-hipe
sudo port install couchdb

E vá tomar um cafézinho. Time is life. ;)

Zuera, Nando do Spesa. :P

#5 Luiz Rocha disse:
29 Jan 09, 09:02PM

Pegando a deixa do Lhúngaro, seria uma boa colocar '--enable-smp-support --enable-hipe --enable-darwin-universal --enable-threads' no seu configure. Na minha máquina eu compilei com o hipe de boa.

Bom, existe um build (não oficial) do CouchDB que vem com uma interfacezinha bem besta (mais besta que a do MAMP) para iniciar/parar o servidor do CouchDB.

http://code.google.com/p/couchprojects/downloads/list

O lado positivo é que não tem que lidar com o spidermonkey e nem com o ICU (se bem que em *nix o ICU é bem menos chato). Mas entendo seus porquês de instalar na mão.

#6 Nando Vieira disse:
29 Jan 09, 09:13PM

Luiz, tinha esquecido dos flags! Na verdade, eu já tinha o Erlang instalado! :P
Já atualizei o post!

#7 Lucas Húngaro disse:
29 Jan 09, 11:57PM

Eu estava instalando sem o HiPE pois li que ele dava pau no MacOS X. Mas busquei mais informações agora e vi que era apenas até a versão 10.5.3 do sistema operacional.

#8 Daniel Passos disse:
12 Fev 09, 09:11PM

Otima dica!

#9 Proteu Alcebidiano disse:
26 Jan 10, 10:04PM

So um adendo: quem quiser usar as versões mais atuais dos programas citados neste post, quando é exetucado o makefile do spidermonkey, ele está com um bug, o qual pode ser corrigido com este patch

http://github.com/janl/couchdbx-core/blob/ff47372552d10df00d74cb7989dfed4a19a6040d/patches/js/patch-jsprf.c

T+

Deixe um comentário




Este blog usa o Gravatar.


Não é aceito código HTML: adicione-o no pastie.org ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.