2010-12-29 8 views

Respuesta

8

Para sqlite3-ruby, su método es compatible desde enero de 2011 commit. Pero en general no es posible anular esto debido a cómo funcionan los rubygems. Es

  1. Desempaquetar la gema.

  2. se mira en él spec & descubre que utiliza el atributo 'extensiones' - por lo general un camino a un archivo extconf.rb especialmente escrito.

  3. Ejecuta ese archivo para generar un Makefile. A menos que el autor de extconf.rb explique explícitamente en honor de las variables env, se ignorarán. Por ejemplo, en la últimas versiones de gema sqlite3-rubí, su extconf.rb tiene una línea

    RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC'] 
    

    Así que si se ejecuta en Bash

    CC=gcc gem install sqlite3-ruby 
    

    extconf.rb generará el Makefile con la variable CC que es establecido en gcc o lo que quieras.

  4. Después de generar el archivo Makefile, rubygems ejecuta la utilidad make para compilar la extensión .

En teoría, si rubygems nos permitieron indicar la línea de comandos adicional parámetros para el maquillaje, podríamos utilizar su criterio -e y luego no dependen de autores de extconf.rb en absoluto. (-e opción da las variables tomadas de la precedencia medio ambiente durante variables a partir de los archivos make.)

2

Usando RVM, en OS X, cambio el siguiente archivo para lograr un cambio permanente del compilador gcc:

~/.rvm/rubies/ruby-1.X.Y/lib/ruby/1.X/i686-darwin10.8.0/rbconfig.rb 

en este archivo que he encontrado lo siguiente:

CONFIG["configure_args"] = " ...' 'CC=/usr/bin/gcc-4.2'" 

    CONFIG["CC"] = "/usr/bin/gcc-4.2" 

    CONFIG["CPP"] = "/usr/bin/gcc-4.2 -E" 

ya no tengo este gcc-4.2 compila en mi caja, solamente/usr/bin/gcc. Reemplazar gcc-4.2 por gcc funcionó bien para instalar una gema antigua. Esto es mientras estoy siendo arrinconado trabajando en un ambiente antiguo que no puedo actualizar.

Cuestiones relacionadas