En primer lugar, agradezco a la persona, que surgió ingenio h la solución al problema zlib faltante. (No fui yo. :-)
Lamentablemente, perdí el enlace a la publicación original, pero la esencia de la solución en Linux es compilar el Ruby, mientras que los archivos de encabezado zlib están disponibles para el script de configuración de Ruby. En Debian significa que los paquetes de desarrollo zlib deben instalarse antes de que uno comience a compilar el Ruby.
El resto del texto aquí no contiene nada nuevo y se recomienda omitirlo, si se siente cómodo personalizando su entorno de ejecución en sistemas operativos tipo UNIX. La siguiente es una combinación de una breve introducción a algunos conceptos básicos e instrucciones paso a paso.
------ El-Start-of-the-HOW-TO -------------------------
Si uno quiere ejecutar un programa, digamos, irb, desde una consola, entonces el archivo llamado irb se busca desde las carpetas en un orden que se describe mediante una variable de entorno llamada PATH. Es posible ver el valor de la PATH escribiendo a una cáscara del golpe (y pulsando la tecla Enter):
echo $PATH
Por ejemplo, si hay 2 versiones de IRB en el sistema, uno instalados por el "oficial" sistema de administración de paquetes, digamos, yum o apt-get, a/usr/bin/irb y el otro que es compilado por el usuario llamado scoobydoo y reside en/home/scoobydoo/ourcompiledruby/bin entonces surge la pregunta, cuál de los dos irb-s se ejecuta.
Si uno escribe a la /home/scoobydoo/.bashrc una línea como:
export PATH="/home/scoobydoo/ourcompiledruby/bin:/usr/bin"
y reinicia el shell bash mediante el cierre de la ventana de terminal y abrir una nueva, entonces tecleando IRB para la consola, el /home/scoobydoo/ourcompiledruby/bin/irb se ejecuta. Si uno escribió
export PATH="/usr/bin:/home/scoobydoo/ourcompiledruby/bin"
a la /home/scoobydoo/.bashrc , entonces el directorio/usr/bin/IRB conseguiría ejecutado.
En la práctica se quiere escribir
export PATH="/home/scoobydoo/ourcompiledruby/bin:$PATH"
porque esto antepone todos los valores que el camino tenía antes de esta asignación al directorio/home/scoobydoo/ourcompiledruby/bin. De lo contrario, habrá problemas, porque no todas las herramientas comunes residen en/usr/bin y es probable que desee tener varias aplicaciones personalizadas en uso.
La misma lógica se aplica a las bibliotecas, excepto que el nombre de la variable de entorno LD_LIBRARY_PATH es
El uso de la LD_LIBRARY_PATH y PATH permite que los usuarios normales, que no tienen acceso a la raíz o que quieren experimentar con no- ese software de confianza, para construirlos y usarlos sin necesidad de privilegios de administrador.
El resto de este mini-cómo-hacerlo supone que construiremos nuestra propia versión de ruby y usaremos nuestra propia versión de la misma, independientemente de lo que esté instalado en el sistema por el software oficial de administración de paquetes de la distribución.
1) =============================
En primer lugar, se crea un par de carpetas y configurar el entorno variables, para que las carpetas sean "útiles".
mkdir /home/scoobydoo/ourcompiledruby
mkdir -p /home/scoobydoo/lib/our_gems
Uno añade las siguientes 2 líneas a la /home/scoobydoo/.bashrc
export PATH="/home/scoobydoo/ourcompiledruby/bin:$PATH"
export GEM_HOME="/home/scoobydoo/lib/our_gems"
Reiniciar la cáscara del golpe al cerrar la ventana de terminal actual y abrir una nueva o escribiendo
bash
en la línea de comando de la ventana actualmente abierta. Los cambios en /home/scoobydoo/.bashrc no tienen ningún efecto en las ventanas/sesiones de terminal que se iniciaron antes del guardado de la versión modificada de /home/scoobydoo/.bashrc La idea es que el/home /scoobydoo/.bashrc se ejecuta automáticamente al inicio de una sesión, incluso si uno inicia sesión en ssh.
2) =============================
Ahora se asegura que los paquetes de desarrollo zlib están disponibles en el sistema. A partir de abril de 2011 no he ordenado los detalles, pero
apt-get install zlibc zlib1g-dev zlib1g
parece ser suficiente en un sistema Debian. La idea es que tanto el archivo de la biblioteca como el encabezado estén disponibles en la ruta de búsqueda "oficial" del sistema. Por lo general, apt-get y lugar por igual los archivos de cabecera en el directorio/usr/include y archivos de la biblioteca a la/usr/lib
3) =================== ==========
Descargue y descomprima la fuente tar.gz de la http://www.ruby-lang.org
./configure --prefix=/home/scoobydoo/ourcompiledruby
make
make install
4) =============================
Si un comando de consola como
which ruby
imprime en la consola
/home/scoobydoo/ourcompiledruby/bin/ruby
entonces la nueva versión compilada es el que se ha de ejecutar el comando
ruby --help
5) =============================
El resto de los programas, gema, IRB , etc., puedan ejecutarse adecuadamente mediante el uso de comandos como:
ruby `which gem` install rake
ruby `which irb`
no debería ser así, pero a partir de abril 2011 no han descubierto ningún formas más elegantes de hacerlo. Si el
ruby `which gem` install rake
da zlib perdido error de nuevo, entonces uno simplemente debe tratar de averiguar, cómo hacer que el zlib incluir archivos y biblioteca disponibles para el Rubí configurar guión y recompilar. (Lo siento, no tengo una solución mejor que ofrecer.)
puede ser una solución sucia podría ser añadir las siguientes líneas al /home/scoobydoo/.bashrc
alias gem="`which ruby` `which gem` "
alias irb="`which ruby` `which irb` "
realidad , que suelen utilizar
alias irb="`which ruby` -KU "
pero la gema debe ser ejecutado sin dar el rubí los argumentos "ku", porque de lo contrario no habrá errores.
------ El extremo del-HOW-TO ------------------------
En mi caso, creo que el problema era que yo estaba de alternar entre los rieles 2.1.0 y 2.1.2 y creo que la dependencia instala resultó en cosas que terminan fuera de control – srboisvert
Freeze carriles en sus aplicaciones, que forma en que no necesita una gema separada para eso y no tendrá conflictos. – nitecoder