Ayer cometí una imprudencia, aventurándome a actualizar mi Ubuntu a la versión 8.10 Intrepid Ibex. Como resultado directo de esto me he quedado sin mi entorno de desarrollo en ruby on rails, así que aquí va una advertencia a los programadores ruby que uséis, como yo, Ubuntu: ¡no te actualices todavía!

Para empezar, el proceso de instalación fué larguísimo (el programa de actualización falló, lo maté tras 15 horas colgado y después hice la instalación a pata desde consola con sudo aptitude update && sudo aptitude safe-upgrade && sudo aptitude full-upgrade).

Cuando finalmente acabó la instalación, reinicié la máquina y aparentemente todo estaba bien. Ubuntu 8.10 no presenta grandes cambios a simple vista… algunas mejoras de interfaz, las fuentes son más legibles, detalles así (supongo que tiene bastantes mejoras a nivel interno, la verdad es que parece algo más rápido).

Pero… tras un rato programando con ruby on rails, comenzaron a pasar cosas raras. Era como si hiciera cache de los partials… los modificaba pero no se reflejaban los cambios al refrescar el navegador… Algunos partials se pintaban mal, con el código cortado… Cosas bastante raras.

Tras un rato probando, me dí cuenta de que lo que no le gustaba eran las líneas tipo:

<% #TODO: … %>

…no me preguntéis por qué, pero si quitaba ese tipo de comentarios del código, volvía a funcionar. Era como si a partir de ese comentario, ignorara el código siguiente, o algo así.

Investigando un poco más, descubrí que al actualizar Ubuntu a 8.10 me habían metido la versión 1.8.7 de Ruby. Y como dicen en la página de Ruby on Rails, “Ruby 1.8.7 still has some bugs to straighten out. “. En la página de Ruby también indican que la última versión estable de Ruby es la 1.8.6.

En resumidas cuentas: que la gente de Ubuntu ha metido una versión inestable de Ruby en su última versión. Algo similar ocurrió en la Ubuntu 8.04, donde metieron Firefox 3 cuando aún estaba en beta… y se colgaba cada dos por tres.

No me gusta esta política de Ubuntu. Digo yo que meten estas versiones beta porque esperan que al poco tiempo del lanzamiento el paquete se actualice y salga de beta, pero mientras tanto eso que has incluído en tu release estable… es defectuoso. Da muy mala imagen de GNU/Linux, donde se supone que uno de sus puntos fuertes es la estabilidad.

Bueno, y ahora qué? Desde luego, no continuar desarrollando con ruby 1.8.7, por si me oculta más bugs sorpresa. Así que sudo aptitude remove ruby, descargar y compilar ruby 1.8.6, reinstalar rubygems, y encontrarme con que de todos modos, no arranca mi aplicación rails: “no such file to load — openssl”… ajá! claro, también tendría que reinstalar las librerías de ruby para la 1.8.6, ya que en mi sistema siguen las de la 1.8.7… por si fuera poco, me han desaparecido todas las gemas que tenía instaladas, y no eran pocas…

Desde este punto, tengo varias opciones:

  1. Quedarme con ruby 1.8.7. Lo más sencillo, pero también me puede esconder muchos bugs y darme quebraderos de cabeza durante el desarrollo.
  2. Seguirme pegando para instalar ruby 1.8.6 y todas sus librerías, reinstalar las gemas necesarias, etc. Con el nivel de quemazón que tengo, me parece que se ha agotado mi paciencia.
  3. Desinstalar Ubuntu 8.10 y volverme a Ubuntu 8.04. Quién me mandaría a mí actualizarme ahora. Tendría que formatear el disco y volver a copiar mis datos del backup, e instalar todos los programas que necesito. Pasando.
  4. Hacer un downgrade a la 8.04. En principio igual que haces un dist-upgrade se puede hacer el proceso inverso para volver a una versión anterior. Pero es un proceso poco documentado y directamente te advierten que puede dar bastantes problemas: “The last step probably will end up a catastrophic mess of incompletely installed packages“. Además es sábado y me quiero ir de paseo.
  5. Comprarme el macbook de una puta vez. Tenía pensado hacer el pedido el día 5 a través de la web para tenerlo a final de mes, pero ya que tengo que reinstalar mi entorno de desarrollo, estoy por pasarme el lunes por la frutería más cercana y comprarme una manzana.

Así que ya sabéis amiguitos, cuidado con actualizar a Ubuntu 8.10 hasta que dejen de incluir una beta de Ruby… Sobre todo los que lo estemos usando también en servidores, que eso sí que puede ser una risa, actualizarte el servidor y que empiecen a petar las aplicaciones!

ACTUALIZACIÓN / PUNTUALIZACIÓN: ruby 1.8.7 es estable, es rails quien tiene problemas de incompatibilidad con algunas versiones. Más información en los comentarios de este post.

ACTUALIZACIÓN: finalmente, lo que hice fué reinstalar Ubuntu 8.04, ha sido una solución mucho más rápida que pasar por el macbook (por el momento dejo aparcada esta idea… Ubuntu 8.04 mooola!)


24 Responses to “Cuidado con Ubuntu 8.10, viene con Ruby 1.8.7”  

  1. 1 Juan Lupión

    En los ECIs de Madrid ya tienen los nuevos MacBooks. Mucho más rápido que pedirlos a la Apple Store… (tentación, tentación…)

  2. 2 Jaime Iniesta

    Hey Juan!

    Yo el lunes mismo preguntaré en las tiendas de Girona, y si no, me acerco a Barcelona. Y si no pues en Madrid cuando vaya para la conferencia.

  3. 3 S.C.

    Un SO con actualizaciones cada 6 meses, en el que para colmo obviamente no se actualiza el sistema base, sino TODO no puede ser decente en la puñetera vida… salvo que todo lo que uno haga sea leer tres webs y el correo electrónico, y a veces ni eso. Yo no sé cómo les cuesta tanto entender este concepto.

    Yo no soy desarrollador Ruby, así que por curiosidad… ¿qué tal lenguajes como Ruby o Python en un UNIX serio como FreeBSD? ¿Se usan? ¿Tienen base de desarrolladores?

  4. 4 Amaia

    Si que eres intrépido, sí ;)
    No tenía intención de actualizarme pronto, pero con esto ya ni se me pasa por la cabeza, seguiré con mi ubuntu 8.04 por un tiempo, que como es LTS todavía hay soporte para rato.
    A lo mejor hasta acabo comprandome un mac y poniendole arranque dual ;)

  5. 5 Jaime Iniesta

    ACTUALIZACIÓN: en realidad, ruby 1.8.7 sí es estable, viendo la página oficial de Ruby (versión inglesa). Así que más bien parece que es rails quien no funciona bien con ruby 1.8.7 (como siguen diciendo en la web de rails).

    Otra cosa es… ¿ha hecho bien ubuntu en incluir una versión de ruby que da problemas con su uso más extendido, rails?

  6. 6 dagi3d

    llamadme anticuado, pero yo para todo el tema de programación(salvo algunas librerías) prefiero bajarme el código fuente y compilarlo. además lo instalo en /usr/local/loquesea-version y hago un enlace simbólico en /usr/local/loquesea y así tengo todo controlado y sé perfectamente lo que tengo instalado y cambiar de versión es tan simple como hacer que el enlace simbólico apunte a la nueva(y en caso de problemas siempre hay vuelta atrás)
    respecto al mac, te va a encantar, ya lo verás :). yo también era usuario de ubuntu y el cambio lo he agradecido, aunque antes estaba bastante contento(lo único que echaba de menos eran las aplicaciones de diseño). y no es por hacerle publicidad al corte inglés, pero mi recomendación es que te lo pilles ahí, ya que tienen los mismos precios que la apple store y te dan los dos años de garantía de rigor y no te ponen pegas en caso de fallos. además te lo llevas puesto. eso sí, apple es la única marca que tienen que no permite devoluciones(pero vamos, que en cuando pruebas el mac os no lo vas a querer soltar)

  7. 7 TooManySecrets

    Bueno, ruby y rails pueden llegar a ser una auténtica mosca cojonera, como pocas he visto. Te lo digo porque la web de mi empresa, que es de lo que vivimos, está hecha enteramente en RoR, y yo, como responsable del dpto. de sistemas te puedo asegurar que he visto ya muchos “colores” con esto.
    Es un auténtico cachondeo que cada vez que tienes que actualizar un sistema operativo (al menos usando Linux), tienes que ir haciendo pruebas, pases mágicos, etc, para que lo mismo que tenías antes te funcione igual (o como mucho te funcione).
    Es cierto que puedes hacer un freeze de las gemas instaladas dentro del RoR, y afortunadamente eso ayuda mucho. Pero incluso puede darse el caso de que tengas que recompilar la gema y, para colmo, te falle la compilación…

    En mi experiencia, el mejor sistema para no tener estos problemas (y que te dá muchísimo rendimiento) es FreeBSD, pero también es cierto que de la familia GNU/Linux el que menos problemas me ha dado es openSUSE.

    No sé… Si quieres comprarte un Mac por gusto y porque te apetece, pues nada hombre. Ahora, si una de las decisiones de peso es porque no te ha funcionado Bugbuntu… ¡Joer tio! ¡Que hay vida más allá de eso hombre!

    Venga, que vaya muy bien al menos, elijas lo que elijas.

    Have a nice day ;-)
    TooManySecrets

  8. 8 Jaime Iniesta

    Hey Amaia, haces bien en quedarte un ratillo más en 8.04 y no como yo que me apresuré.

    Molaría lo del mac con arranque dual. Yo esta vez tengo ganas de cambio así que le voy a dar mayormente a mac.

  9. 9 Jaime Iniesta

    Hey dagi3d, gracias por tus comentarios. Es buena idea esto de tenerlo compilado cada versión en su carpeta y jugar con los enlaces simbólicos. Así puedes trastear con una u otra versión si lo necesitas.

    No se bien dónde comprarlo, pero a lo mejor me voy directo al Corte Inglés, sobre todo por la facilidad para cambiarlo en caso de fallos. No sabía que dieran dos años de garantía, pensaba que en todos lados era de 1 año.

    Lo que me han recomendado es contratar el servicio AppleCare (249 € más) para tener garantía de 3 años. ¿Qué opináis sobre esto del AppleCare?

  10. 10 Jaime Iniesta

    Hey TooManySecrets, gracias por tus consejos. Me queda pendiente probar FreeBSD.

    En realidad mi paso a mac no es por el tema de estos problemas, ya lo tenía pensado de antes simplemente porque me lo han recomendado muchos amigos dentro del entorno Ruby on Rails.

    De hecho tenía pensado hacer el pedido la semana que viene, pero ahora lo pediré el mismo lunes porque me corre más prisa.

  11. 11 DaVinci

    Hola Jaime.

    Yo uso ruby 1.8.7 con una aplicación Rails tocha (en el curro) y no me ha dado problemas. ¿Qué versión de Rails usas? Con la 2.0.1 hay cosas no resueltas, pero a partir de 2.1 deberían desaparecer.

    ¿Algún ejemplo ilustrativo de lo que te pasa?

  12. 12 Jaime Iniesta

    DaVinci, el error lo he encontrado con rails 2.1.0 + ruby 1.8.7.

    Un ejemplo, colocar al principio de un partial un comentario to-do en una línea

    < % #TODO: patatin %>

    Si hago eso, es como si no leyera el código a continuación, aunque lo cambie no se refleja en el navegador.

  13. 13 Ivan

    Hola Jaime,

    Soy newbie en rails, pero senior en sistemas. Ubuntu es una opcion facil para el usuario no experto que quiere usar linux, pero es una castaña para cosas mas serias. Creo que es posible que ubuntu haya proliferado entre la comunidad de developers en el sentido de que un no-sysadmin puede vivir tranquilo y disponer de un entorno de desarrollo facilmente gracias a su paqueteria. Pero es una distribucion bastante oscura, como debian. Su sistema de paquetes esconde demasiadas magias, en pos de ofrecer una experiencia de usuario mas agradable. Prueba Slackware o Freebsd, y quiza te cueste un poco al principio, pero no tendras nunca estos systos. Por cierto que Darwin esta basado en Freebsd. No es ninguna novedad, pero es digno de mencion en este hilo.

    Un saludo desde Mataro

    Ivan

  14. 14 Antonio Pardo

    Hola Jaime, yo uso Rails com hobbie. Siempre hago cosillas que nunca pongo en producción :). Estoy usando Debian Sid para el desarrollo con Ruby 1.8.7 y nunca he visto cosas raras. Lo mismo con Merb…

    Ciao

  15. 15 ozofeliz

    Amaia, otra opcion, sobre todo si quieres probarlo, es comprar el vmware fusion. Yo trabajo con osx ( evidentemente), ubuntu y windows xp. Te bajas una maquina virtual ya configurada de vmware y tira millas. Eso si, si tienes 4 gigas y le das 1 o 1,5 a la maquina virtual, como que mejor.

    Saludos.

  16. 16 ozofeliz

    Y no solamente Ubuntu, sino cualquier distribución del mercado. Lo que yo hago, sobre todo con las maquinas virtuales de xp, es hacerlas de un tamaño de 7.5 para poder hacerun backup en dvd de doble cara. No es mucho espacio, pero más que suficiente para cualquier entorno de programación.

    Siempre tengo una copia en limpio para hacer pruebas de instalaciones de aplicaciones.

    Acabo de instalar 8.10 y la verdad es que va más rapido que la que tenía anterior con la 8.04.

  17. 17 loki

    Hola Jaime,

    He visto tu comentario en barrapunto y como me suena tu nombre de la lista ror-es, me he animado a contestarte aunque ya no sea necesario…

    Como tu bien has dicho ruby 1.8.7 es tan estable como lo era 1.8.6. Ciertas versiones de rails se pegan con esta última de ruby porque hacían un montón de cosas molonas y que tan canchondos nos ponen a los que trabajamos con rails, a base de “mixins”, “monkey patching” y demás movidas. Algunas de esas cosas eran tan divertidas como sobrescribir el comportamiento de la clase String de ruby (con tronchantes consecuencias).

    Gran parte del encanto de rails es la cantidad de magia gratis que te proporciona, pero la historia de rails no está para nada exenta de inestabilidades, perdidas de compatibilidad hacia atrás, etc. Así que don’t blame ruby :P

    Por último, debo de ser muy afortunado dado que llevo con Kubuntu 8.10 desde la beta 2 y estoy tremendamente contento. También es cierto que soy bastante talibán Apple.

  18. 18 Jaime Iniesta

    Hey loki, sí, como ya he aclarado, ruby 1.8.7 ha sido etiquetado como “estable”. Parece más bien un tema de rails, que tiene alguna incompatibilidad con esta versión, como indican en la página de rails.

    En todo caso, insisto, mi paso a mac era planeado de hace ya cosa de un mes; pero justo estos problemas que he tenido han sido muy oportunos para decidirme a dar el salto :)

  19. 19 Jaime Iniesta

    Tras hacer una búsqueda de “rails ruby 1.8.7″ he encontrado mucha más gente que reporta errores de algunas versiones de rails con ruby 1.8.7. Ya me quedo más tranquilo, de no ser el único al que le pasa esto:

    http://www.google.es/search?q=rails+ruby+1.8.7
    http://www.robbyonrails.com/articles/2008/06/20/ruby-1-8-7-on-macports-causing-some-problems
    http://bicosyes.com/rails-2-1-con-ruby-1-8-7-broken/
    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=484351
    http://dev.hubiquity.fr/2008/6/3/avoid-rails-troubles-with-ruby-1-8-7-under-debian

  20. 20 Miguel Ángel Martínez

    Ningún problema con Ubuntu 8.10, usando Rails 2.1.1, 2.1.1 y Edge.

    En fin …

  21. 21 Jaime Iniesta

    Miguel Ángel, en principio la incompatibilidad de rails con ruby 1.8.7 se soluciona a partir de rails 2.1.0, pero si tienes como yo varias aplicaciones rails 2.0.2 o anteriores que seguir manteniendo pues es una jodienda (y un buen incentivo para pasar estas apps a la última versión de rails, desde luego).

    Más enlaces:
    “Ruby 1.8.7 breaks backward compatibility and is only compatible with Rails 2.1 and later, so don’t go overboard!”
    http://www.rorsecurity.info/journal/2008/6/24/ruby-security-vulnerabilities.html

    “Ruby 1.8.7 breaks radiant”
    http://radiantcms.org/blog/archives/2008/06/18/ruby-1-8-7-breaks-radiant/

  22. 22 VIctor Garcia

    Pues muchas gracias por la información, ayer estuve a punto de actualizar, menos mal que no lo hice.

    Un saludo y gracias otra vez ;)

  23. 23 david

    para compilar ruby 1.8.6 en intrepid podrias hacer esto antes de compilar:

    sudo apt-get build-dep ruby

    esto te instala todas las dependencias de compilacion

    un saludo,

    David

  24. 24 mikhailov

    I have found the article about install Ruby 1.8.6 on Ubuntu 8.10 from repo.
    You can find it at http://www.railsgeek.com

Leave a Reply