Abel Muiño

home

Como usar MacPorts para instalar una versión anterior de ruby

05 Mar 2010

Hace poco que he empezado a evolucionar una aplicación escrita hace más de un año usando ruby on rails.

La aplicación funciona sin problemas en Ubuntu Karmic (en concreto, esta imagen de amazon) con la última versión de ruby disponible mediante apt-get.

El problema

El problema es que en mi máquina local la cosa no iba tan bien. El motivo es una diferencia en el patchlevel de las versiones:

ruby ruby 1.8.7 (2009-06-12 patchlevel 174) [i486-linux]
ruby ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin9]

Yo uso MacPorts:http://www.macports.org/ para instalar ruby en mi mac y, aunque hay varias versiones de ruby disponibles, sólo está patchlevel más reciente.

La solución

Como siempre, google trae la respuesta. Joe Homs cuenta como crear una fuente local para MacPorts que contenga la versión anterior que queramos.

No es complicado:

mkdir /opt/macports-local-repo
cd /opt/macports-local-repo/
svn co http://svn.macports.org/repository/macports/trunk\
/dports/lang/ruby@62943 lang/ruby
file:///opt/macports-local-repo/
rsync://rsync.macports.org/release/ports/ [default]
sudo portindex /opt/macports-local-repo/
port search --exact ruby
ruby @1.8.7-p174 (lang, ruby)
    Powerful and clean object-oriented scripting language

ruby @1.8.7-p249 (lang, ruby)
    Powerful and clean object-oriented scripting language

Found 2 ports.

sudo port install ruby @1.8.7-p174

Bonus

MacPorts permite activar y desactivar versiones, así­ que no hay problema en tener unas cuantas versiones instaladas, dependiendo del proyecto:

sudo port installed ruby
The following ports are currently installed:
  ruby @1.8.7-p72_2+thread_hooks
  ruby @1.8.7-p174_2+darwin+thread_hooks (active)
  ruby @1.8.7-p249_0+darwin+thread_hooks

Y para cambiar de una versión a otra…

sudo port activate ruby @1.8.7-p249*
--->  Deactivating ruby @1.8.7-p174_2+darwin+thread_hooks
--->  Activating ruby @1.8.7-p249*
AbelBook:~ amuino$ sudo port installed ruby
The following ports are currently installed:
  ruby @1.8.7-p72_2+thread_hooks
  ruby @1.8.7-p174_2+darwin+thread_hooks
  ruby @1.8.7-p249_0+darwin+thread_hooks (active)