Error de instalación de sqlite3 gem a través de bundler

Estoy tratando de conseguir el sqlite3-ruby gem (versión 1.3.4) instalado en mi cuenta (CentOS en alojamiento compartido, por lo que necesito para instalar esta sin root) y la versión de sqlite instalado no es bastante nuevo para las versiones más recientes de sqlite3-ruby, así que tengo que compilar las bibliotecas bajo mi cuenta. La versión de sqlite estoy usando es la versión 1.7.0 como descubrí que había problemas con las versiones más recientes.

He salido adelante y hacer esto ya que he descargado sqlite-3.7.0.tar.gz y se instala de la siguiente manera:

./configure prefix=$HOME
make && make install

Luego fui a mi aplicación rails 3 y corrió las siguientes:

bundle config build.sqlite3-ruby “--with-sqlite3-include=$HOME/include --with-sqlite3-lib=$HOME/lib

A continuación:

bundle install --path vendor/bundle

Sin embargo, me sale el siguiente y mi paquete de falla de instalar completamente:

Installing sqlite3 (1.3.4) with native extensions /usr/lib/ruby/site_ruby/1.8/rubygems/installer.rb:533:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

        /usr/bin/ruby extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... yes
checking for rb_proc_arity()... no
checking for sqlite3_initialize()... no
checking for sqlite3_backup_init()... no
checking for sqlite3_column_database_name()... no
checking for sqlite3_enable_load_extension()... no
checking for sqlite3_load_extension()... no
creating Makefile

make
gcc -I. -I. -I/usr/lib/ruby/1.8/x86_64-linux -I.  -fPIC -g -O2  -fPIC   -c sqlite3.c
gcc -I. -I. -I/usr/lib/ruby/1.8/x86_64-linux -I.  -fPIC -g -O2  -fPIC   -c exception.c
gcc -I. -I. -I/usr/lib/ruby/1.8/x86_64-linux -I.  -fPIC -g -O2  -fPIC   -c backup.c
gcc -I. -I. -I/usr/lib/ruby/1.8/x86_64-linux -I.  -fPIC -g -O2  -fPIC   -c database.c
database.c: In function 'initialize':
database.c:47: error: 'SQLITE_OPEN_READWRITE' undeclared (first use in this function)
database.c:47: error: (Each undeclared identifier is reported only once
database.c:47: error: for each function it appears in.)
database.c:47: error: 'SQLITE_OPEN_CREATE' undeclared (first use in this function)
database.c:72: error: 'SQLITE_OPEN_READONLY' undeclared (first use in this function)
database.c: In function 'set_sqlite3_func_result':
database.c:278: error: 'sqlite3_int64' undeclared (first use in this function)
make: *** [database.o] Error 1

Alguna idea? Este se utiliza para trabajar, pero con las versiones más recientes de sqlite3-ruby parece que es el no va más.

Aquí algo de información adicional:

rails -v
Rails 3.0.9

gem -v
1.7.2

.bash_profile:

PATH=$HOME/bin:$PATH
GEM_HOME=$HOME/gems
GEM_PATH=$HOME/gems
export LD_LIBRARY_PATH=$HOME/lib
export USERNAME BASH_ENV PATH GEM_HOME GEM_PATH

which sqlite3
/home/striketh/bin/sqlite3

Edición:

Me fui por delante y cambiado de sqlite3-ruby para sqlite3 en mi Gemfile y corrió las siguientes:

bundle config build.sqlite3 “--with-sqlite3-include=$HOME/include --with-sqlite3-lib=$HOME/lib --with-sqlite3-dir=$HOME

Este mensaje de error me:

make
gcc -I. -I. -I/usr/lib/ruby/1.8/x86_64-linux -I. -DHAVE_SQLITE3_INITIALIZE -DHAVE_SQLITE3_BACKUP_INIT -I/home/striketh”/include    -fPIC -g -O2  -fPIC   -c sqlite3.c
In file included from ./sqlite3_ruby.h:42,
from sqlite3.c:1:
./backup.h:7: error: expected specifier-qualifier-list before 'sqlite3_backup'
make: *** [sqlite3.o] Error 1

Cualquier otra idea?

la reconstrucción de sqlite3 con homebrew o macports.
En CentOS? Buena suerte con eso :).
Al lado de sqlite3 también tengo algunos sqlite3 el desarrollo de las bibliotecas instaladas, por desgracia, no sé exactamente cuáles. en debian es libsqlite3-dev y libsqlite3-0.
El paquete ya está instalado en el sistema, pero desde la versión de sqlite a nivel de sistema operativo no está actualizado no puedo confiar en ella. Puedo conseguir gem install sqlite3 para trabajar – tengo que averiguar si hay un arg me puede pasar a bundler para modificar la ubicación de gcc está buscando por todo, como que es lo que me impide instalar a través de bundler

OriginalEl autor Striketh | 2011-07-28

5 respuestas

  1. 13

    Aquí está la solución, que he comprobado que funciona.

    .bash_profile de instalación:

    # .bash_profile
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    . ~/.bashrc
    fi
    # User specific environment and startup programs
    PATH=$HOME/bin:$PATH
    GEM_HOME=$HOME/gems
    GEM_PATH=$HOME/gems
    export LD_LIBRARY_PATH=$HOME/lib
    export USERNAME BASH_ENV PATH GEM_HOME GEM_PATH

    A continuación, ejecute:

    wget http://www.sqlite.org/sqlite-autoconf-3070701.tar.gz
    tar -zxvf sqlite-autoconf-3070701.tar.gz
    cd sqlite-autoconf-3070701
    ./configure --prefix=$HOME
    make && make install
    cd $RAILS_APP_DIR
    vi Gemfile

    Asegúrese de que una línea similar a este es el Gemfile: gem “sqlite3′, “1.3.4”

    bundle config build.sqlite3 --with-sqlite3-include=$HOME/include --with-sqlite3-lib=$HOME/lib --with-sqlite3-dir=$HOME/bin
    bundle install --path vendor/bundle
    Tengo el mismo error de compilación en mi CentOS host con sqlite 3.3.6, rieles 3.0.9, joya de la 1.5.2. Tengo acceso root en el sistema, y mis joyas están en /opt, así que no estoy seguro de cómo aplicar la revisión. Me puedes dar una pista de que podría ayudarme a conseguir este compilado? Qué necesito para instalar sqlite-autoconf? Estoy usando el paquete de uno de mis repositorios.
    Sólo para referencia en el futuro, la joya de sqlite3 requiere sqlite 3.6.16+. CentOS tiene v3.3.6 que no funciona con la gema.
    Gracias por la punta con el sqlite versión requisito. Compilar desde el código fuente y la instalación con gem install sqlite3 -- --with-sqlite-dir=/usr/local hizo el truco en CentOS.
    Creo que quiso decir --with-sqlite3-dir= es decir, gem install sqlite3 -- --with-sqlite3-dir=/usr/local

    OriginalEl autor Striketh

  2. 11

    En Ubuntu:

    sudo apt-get install libsqlite3-dev

    Luego bundle install trabajo.

    OriginalEl autor Travis Reeder

  3. 6

    Instalar “sqlite-devel” paquete para construir extensiones nativas de “sqlite3” joya de RH basada en sistemas.

    En sistemas basados en Debian instalar “libsqlite3-dev” paquete.

    sqlite-devel ya está instalado: rpm-qa | grep sqlite-devel sqlite-devel-3.3.6-5 sqlite-devel-3.3.6-5
    Usted está tratando de instalar “sqlite3-ruby’ o ‘sqlite3’ joya? ‘Sqlite3” es preferible.
    Véase mi edición anterior.
    Ah, me lo imaginé. Las citas en mi paquete de configuración de ruta fueron arruinando las cosas. He éxito conseguido instalar ahora.

    OriginalEl autor Andrei Petrenko

  4. 2

    En CentOS, puede utilizar yum (comprobado que funciona)

    yum install sqlite sqlite-devel
    gem install sqlite3

    OriginalEl autor jenjenut233

  5. 1

    joya sqlite3 requiere sqlite 3.6.16+. CentOS tiene v3.3.6

    Así, CentOS las necesidades del usuario:

    wget "http://www.sqlite.org/sqlite-autoconf-3071000.tar.gz"

    entonces, descomprimir y:

    cd sqlite-autoconf-3071000
    ./configure --prefix=/usr/local/sqlite-3.7   
    make 
    make && install

    a continuación, intente gem install sqlite3 de NUEVO.

    OriginalEl autor hongtium

Deja un comentario

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