Instalando Ruby(1.9.3) on Rails(3.2.2) en Ubuntu Server 11.10 (y de cómo solucioné los errores)

Son las 17:50. Empecé a las 13:20. ¡Lo hice!

Error con RoR y zlib

Error con RoR y zlib

ERROR: Loading command: install (LoadError)
cannot load such file -- zlib
ERROR: While executing gem ... (NameError)
uninitialized constant Gem::Commands::InstallCommand

En estas épocas del año, que me encuentro desarrollando en Ruby on Rails, me ha tocado montar otro servidor que utilizaremos en producción con un proyecto que tengo. Ha sido un largo trabajo. He tenido errores, pero los he solucionado (justo cuando estaba a punto de rendirme).

  1. He instalado un Ubuntu Server y he escogido los paquetes LAMP (para mis proyectos utilizaré Apache y MySQL con RoR).
  2. Instalamos el paquete que nos permitirá compilar y librerías de YAML:
    macool@shiriculapo.local:~$ sudo apt-get install build-essential libyaml-dev zlib1g-dev libreadline-dev libopenssl-ruby libssl-dev
  3. Descargamos el código fuente de Ruby (1.9.3):
    macool@shiriculapo.local:~$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p0.tar.gz
  4. Descomprimimos el paquete de código fuente que acabamos de descargar:
    macool@shiriculapo.local:~$ tar xzvf ruby-1.9.3-p0.tar.gz
    Nos cambiamos a la carpeta que acabamos de descomprimir:
    macool@shiriculapo.local:~$ cd ruby-1.9.3-p0
  5. Esta es la parte importante.Antes de realizar este paso, estuve toda la tarde probando un millón de posibles soluciones, incluyendo:
    • utilizar rvm de mil maneras
    • instalar miles de librerías relacionadas con zlib
    • instalar ruby, rubygems y rails desde el repositorio, con apt-get install ruby-full rubygems rails
    • compilar zlib manualmente y especificarlo al momento de configurar ruby para su compilación
    • otras

    No pierdan su tiempo, ni el mío. No hablaré acerca de ninguna de estas “soluciones”; no funcionan. Haremos algo más sencillo, que es lo que a mi me resultó.
    Descomentaremos una línea en la que ruby (por defecto) ignora zlib. Yo soy un fan de GNU, y utilizaré nano(un editor de texto de terminal), pero ustedes pueden utilizar cualquier editor:
    macool@shiriculapo.local:~/ruby-1.9.3-p0$ nano ext/Setup
    Aquí, vamos a la última línea y descomentamos zlib, como en la imagen:

    descomentando zlib

    descomentando zlib

    En nano, cierro el archivo con CTRL+X (y lo guardo)

  6. Configuramos las librerías que ruby necesita para que coincidan con las de nuestro servidor:
    macool@shiriculapo.local:~/ruby-1.9.3-p0$ ./configure
    Una vez configurado, compilamos ruby:
    macool@shiriculapo.local:~/ruby-1.9.3-p0$ sudo make
    … E instalamos ruby:
    macool@shiriculapo.local:~/ruby-1.9.3-p0$ sudo make install
    En este punto, ruby ya debe estar instalado:

    ruby -v

    ruby -v (versión de ruby)

  7. Esta es la otra parte importante. Instalamos zlib. Nos cambiamos a la carpeta ext/zlib dentro del código fuente de ruby:
    macool@shiriculapo.local:~/ruby-1.9.3-p0$ cd ext/zlib/
    Configuramos las librerías de zlib:
    macool@shiriculapo.local:~/ruby-1.9.3-p0/ext/zlib$ ruby extconf.rb
    Compilamos zlib:
    macool@shiriculapo.local:~/ruby-1.9.3-p0/ext/zlib$ make
    Instalamos zlib:
    macool@shiriculapo.local:~/ruby-1.9.3-p0/ext/zlib$ sudo make install
  8. Ahora, vamos por rubygems. Salimos de la carpeta de ruby:
    macool@shiriculapo.local:~/ruby-1.9.3-p0$ cd ..
    Descargamos el código fuente al servidor:
    macool@shiriculapo.local:~$ wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.21.tgz
    Descomprimimos el código fuente de rubygems (que acabamos de descargar):
    macool@shiriculapo.local:~$ tar xzvf rubygems-1.8.21.tgz
    Nos cambiamos a la carpeta del código fuente de rubygems:
    macool@shiriculapo.local:~$ cd rubygems-1.8.21
  9. Instalamos rubygems:
    macool@shiriculapo.local:~/rubygems-1.8.21$ sudo ruby setup.rb
    Salimos de la carpeta de rubygems:
    macool@shiriculapo.local:~/rubygems-1.8.21$ cd ..
    rubygems debe estar instalado:

    gem -v

    gem -v (versión de rubygems)

    En este punto, ya podemos eliminar todo lo que acabamos de descargar; no nos servirá para nada más

  10. Instalamos rails (con rubygems, se deberían instalar todas sus dependencias):
    macool@shiriculapo.local:~$ sudo gem install rails

    rails -v

    rails -v (versión de rails)

Eso es todo :)

4 Responses to Instalando Ruby(1.9.3) on Rails(3.2.2) en Ubuntu Server 11.10 (y de cómo solucioné los errores)

  1. josevi says:

    Hola, querria saber si me puede ayudar con mi instalación. No me da ningún problema hasta el paso 7 donde al hacer ruby extconf.rb me aparece:
    —————————————————–
    josevi@hachepe:~/ruby/ruby-1.9.3-p0$ cd ext/zlib
    josevi@hachepe:~/ruby/ruby-1.9.3-p0/ext/zlib$ ruby extconf.rb
    checking for deflateReset() in -lz… /usr/local/lib/ruby/1.9.1/mkmf.rb:246:in `initialize’: Permission denied – mkmf.log (Errno::EACCES)
    from /usr/local/lib/ruby/1.9.1/mkmf.rb:246:in `open’
    from /usr/local/lib/ruby/1.9.1/mkmf.rb:246:in `log_open’
    from /usr/local/lib/ruby/1.9.1/mkmf.rb:251:in `open’
    from /usr/local/lib/ruby/1.9.1/mkmf.rb:280:in `postpone’
    from /usr/local/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for’
    from /usr/local/lib/ruby/1.9.1/mkmf.rb:840:in `have_library’
    from extconf.rb:13:in `block in ‘
    from extconf.rb:13:in `each’
    from extconf.rb:13:in `find’
    from extconf.rb:13:in `’
    —————————————–
    Despué puedo seguir hasta llegar al último paso que me sale al hacer sudo gem install rails
    ——————————————-
    ERROR: Loading command: install (LoadError)
    cannot load such file — zlib
    ERROR: While executing gem … (NameError)
    uninitialized constant Gem::Commands::InstallCommand
    ———————————————

  2. Alejo says:

    Muchas gracias, me sirvió perfecto.

  3. Encontré esto luego de instalar jejeje. La verdad no se si sería por tu versión de ubuntu o por la versión de rails o ruby.. pero a mi no se me hizo complicado. Tuve 2 problemas puntuales: sqlite3 y node.js ambos se solucionaron instalando desde los repositorios de ubuntu.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>