Ошибка при установке gem sqlite3 через упаковщик - PullRequest
15 голосов
/ 28 июля 2011

Я пытаюсь установить sqlite3-ruby gem (версия 1.3.4) на мою учетную запись (CentOS на виртуальном хостинге, поэтому мне нужно установить его без рута), а установленная версия sqlite не является достаточно новой дляболее поздние версии sqlite3-ruby, поэтому мне нужно скомпилировать библиотеки под моей учетной записью.Я использую версию sqlite 1.7.0, так как я обнаружил, что были проблемы с более свежими версиями.

Я уже сделал это и сделал - я скачал sqlite-3.7.0.tar.gz и установил его следующим образом:

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

Затем перешел к моему приложению rails 3 и запустил следующее:

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

Затем:

bundle install --path vendor/bundle

Однако,Я получаю следующее, и мой пакет не может быть полностью установлен:

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

Есть идеи?Раньше это работало, но с более свежими версиями sqlite3-ruby кажется, что больше не нужно.

Вот дополнительная информация:

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

Редактировать:

Я пошел дальше и перешел с sqlite3-ruby на sqlite3 в своем Gemfile и запустил следующее:

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

Это сообщение об ошибке мне:

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

Есть еще идеи?

Ответы [ 5 ]

13 голосов
/ 28 июля 2011

Вот решение, которое я проверял, работает.

.bash_profile setup:

# .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

Затем запустите:

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

Убедитесь, что строка, похожая на эту, есть в 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
11 голосов
/ 26 июня 2012

в Ubuntu:

sudo apt-get install libsqlite3-dev

Тогда установка пакета будет работать.

6 голосов
/ 28 июля 2011

Установка «sqlite-devel» пакета для создания собственных расширений гема «sqlite3» в системах на основе RH.

В системах на основе Debian установите пакет "libsqlite3-dev" .

2 голосов
/ 08 февраля 2013

На CentOS вы можете использовать yum (проверенные работы)

yum install sqlite sqlite-devel
gem install sqlite3
1 голос
/ 21 февраля 2012

гем sqlite3 требует sqlite 3.6.16+.CentOS имеет v3.3.6

Итак, пользователю CentOS необходимо:

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

, затем распаковать и:

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

, тогда попробуйте gem install sqlite3 СНОВА.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...