Instalando Ruby/Tk no OSX apenas com Macports (sem ActiveTcl)

Tentei sem sucesso instalar o Ruby com suporte à Tcl/Tk através do Macports, mas descobri que existe um bug que ocorre em alguns sistemas.
Para contornar o problema, edite o arquivo de configuração do Macports, provavelmente instalado em /opt/local/etc/macports/macports.conf e desabilite a opção portautoclean alterando seu valor para no (o padrão é yes).
Tente instalar o ruby executando o comando: sudo port install ruby+thread_hooks+tk
Em um Terminal, edite o portfile do ruby com o comando: sudo port ed ruby
Procure o grupo variant tk conflicts mactk e certifique de que ele fique da seguinte forma:

variant tk conflicts mactk {
configure.args-delete --without-tk
configure.args-append --with-tk
configure.args-delete --enable-pthread
depends_lib-append port:tcl
port:tk
}

Como a instalação anterior falhou e o portautoclen está desativado, as dependências e os sources continuam na máquina. Então acesso o diretório do source do ruby:

cd /opt/local/var/macports/build/
cd _opt_local_var_macports_sources_rsync.macports.org_release_ports_lang_ruby/
cd work/ruby-1.8.7-p22/ext/tk

E gere o Makefile com o comando:

sudo ruby extconf.rb --without-X11 --with-tcl-include=/opt/local/include --with-tk-include=/opt/local/include --with-tk-lib=/opt/local/lib --with-tcl-lib=/opt/local/lib

Delete os resíduos da tentativa de compilação anterior: sudo make clean
Compile o ruby com a extensão para tcl/tk: sudo make
Quando tudo der certo, instale: sudo make install
Para finalizar, teste se tudo está como deveria:

[email protected]:/opt/local/lib$ irb
irb(main):001:0> require 'tcltklib'
=> true

Tenho certeza de que existem maneiras mais simples de instalar o ruby+tk, mas esse post é resultado de uma daquelas “expedições investigatórias” onde no final você consegue o que quer e volta para o propósito original! 😉

COMPARTILHE ESTE ARTIGO

Share on facebook
Share on linkedin
Share on twitter
Share on email

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *