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

