Compilando Ruby na Mão ;)

Esse post é um tutorial de como compilar o Ruby 1.8.6 ou 1.8.7 no Ubuntu.
Minha motivação para esse post foi, um projeto meu antigo que apresentou uns problemas com o Ruby 1.8.7. Alem de já ter ouvido que o Ruby Compilado tem uma performance muito melhor.

Inicialmente, removemos todos os pacotes do gerenciador padrão do ubuntu.

sudo apt-get purge ruby ruby1.8 rdoc ri irb libopenssl-ruby ruby-dev libopenssl-ruby1.8 libreadline-ruby1.8 libruby1.8 ruby1.8-dev


Tambem é importante ter os compiladores básicos.

sudo apt-get -y install build-essential libssl-dev libreadline5-dev zlib1g-dev

Vamos instalar o checkinstall, para que possamos compilar e gerar um .deb e ter um maior controle sobre o que é instalado

sudo aptitude install checkinstall

Agora vamos puxar o código fonte do Ruby

wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p287.tar.gz
tar xvzf ruby-1.8.6-p287.tar.gz
cd ruby-1.8.6-p287

Agora vamos seguir para o processo de compilação

./configure --prefix=/usr/local --with-openssl-dir=/usr --with-readline-dir=/usr --with-zlib-dir=/usr
make
sudo checkinstall

Para testar se tudo ficou ok:

/usr/local/bin/ruby -ropenssl -rzlib -rreadline -e "puts :success"

Criando os links simbólicos

sudo ln -s /usr/local/bin/ruby /usr/bin/ruby

Um problema que eu tive, foi com a instalação anterior do RubyGem, que apresentava o seguinte erro:

 gem -v
/usr/bin/gem:8:in `require': no such file to load -- rubygems (LoadError)
	from /usr/bin/gem:8

Isso aconteceu, pois a instalação do Ruby e dos Gems mudaram de local.
Para resolver, re-instalamos o gem na nova pasta do Ruby.

A pasta anterior do Ruby era:

whereis ruby
ruby: /usr/bin/ruby1.8 /usr/bin/ruby /usr/lib/ruby /usr/share/man/man1/ruby.1.gz

E agora mudou para:

whereis ruby
ruby: /usr/bin/ruby1.8 /usr/bin/ruby /usr/lib/ruby /usr/local/bin/ruby /usr/local/lib/ruby

Isso aconteceu, pois mudamos o diretório de instalação de “/usr/” para “/usr/local/” no momento do configure (configure –prefix=/usr/local)

Para re-instalar o gem:

wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
tar xvzf rubygems-1.3.1.tgz
cd rubygems-1.3.1/
sudo ruby setup.rb
 
gem1.8 -v
1.3.1

O gem tambem mudou do lugar:

whereis gem
gem: /usr/bin/gem /usr/bin/gem1.8

Para:

whereis gem
gem: /usr/bin/gem1.8 /usr/bin/gem /usr/local/bin/gem

Com a mudança de diretório do gem, perdemos todas as gems que haviam instaladas.
As gems anteriores, podem ser listadas com o seguinte comando:

ls /usr/lib/ruby/gems/1.8/gems/

Aprendi boa parte disso nos seguintes sites:

Ps. Esse post é valido apenas para o Ruby 1.8.6 e 1.8.7

Leave a Reply