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

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:

  • Crea una carpeta para la fuente local.
mkdir /opt/macports-local-repo
  • Descarga la revisón a tu repositorio
cd /opt/macports-local-repo/
svn co http://svn.macports.org/repository/macports/trunk\
/dports/lang/ruby@62943 lang/ruby
  • Informa a MacPorts de que hay una nueva fuente. Para eso, modifica /opt/local/etc/macports/sources.conf y añade una línea con el protocolo file://. En mi caso:
file:///opt/macports-local-repo/
rsync://rsync.macports.org/release/ports/ [default]
  • Actualiza el índice de MacPorts
sudo portindex /opt/macports-local-repo/
  • Comprueba que todo ha ido bien
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.
  • ¡Y a instalar!
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)

1 comentario

Yo antes tambíen usaba MacPorts para esto hasta que me encontré con rvm. Te permite instalar diferentes vm's de Ruby (Jruby, Rubinius, MRI, etc) y de MRI te permite instalar diferentes patchlevels.

http://rvm.beginrescueend.com/

Además la documentación es bastante completa.

Saludos desde Polonia.

Escribir un comentario

Cerrar