Как установить SQlite3 для Ruby on Rails при использовании RVM

Я новичок в программировании и Ruby on Rails. Настройка моей среды разработки была адом. Моя текущая проблема - установка Sqlite 3.

Когда я делаю

$ bundle install

я получил

 Fetching source index for http://rubygems.org/
Using rake (0.8.7) 
Using abstract (1.0.0) 
Using activesupport (3.0.1) 
Using builder (2.1.2) 
Using i18n (0.4.2) 
Using activemodel (3.0.1) 
Using erubis (2.6.6) 
Using rack (1.2.1) 
Using rack-mount (0.6.13) 
Using rack-test (0.5.7) 
Using tzinfo (0.3.24) 
Using actionpack (3.0.1) 
Using mime-types (1.16) 
Using polyglot (0.3.1) 
Using treetop (1.4.9) 
Using mail (2.2.15) 
Using actionmailer (3.0.1) 
Using arel (1.0.1) 
Using activerecord (3.0.1) 
Using activeresource (3.0.1) 
Using bundler (1.0.10) 
Using thor (0.14.6) 
Using railties (3.0.1) 
Using rails (3.0.1) 
Installing sqlite3 (1.3.3) with native extensions /home/oo/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:533:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

        /home/oo/.rvm/rubies/ruby-1.9.2-p180/bin/ruby extconf.rb 
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite3-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/home/oo/.rvm/rubies/ruby-1.9.2-p180/bin/ruby
    --with-sqlite3-dir
    --without-sqlite3-dir
    --with-sqlite3-include
    --without-sqlite3-include=${sqlite3-dir}/include
    --with-sqlite3-lib
    --without-sqlite3-lib=${sqlite3-dir}/lib


Gem files will remain installed in /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/sqlite3-1.3.3 for inspection.
Results logged to /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/sqlite3-1.3.3/ext/sqlite3/gem_make.out
    from /home/oo/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:511:in `block in build_extensions'
    from /home/oo/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:486:in `each'
    from /home/oo/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:486:in `build_extensions'
    from /home/oo/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:159:in `install'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/bundler-1.0.10/lib/bundler/source.rb:96:in `install'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/bundler-1.0.10/lib/bundler/installer.rb:55:in `block in run'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/bundler-1.0.10/lib/bundler/spec_set.rb:12:in `block in each'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/bundler-1.0.10/lib/bundler/spec_set.rb:12:in `each'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/bundler-1.0.10/lib/bundler/spec_set.rb:12:in `each'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/bundler-1.0.10/lib/bundler/installer.rb:44:in `run'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/bundler-1.0.10/lib/bundler/installer.rb:8:in `install'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/bundler-1.0.10/lib/bundler/cli.rb:226:in `install'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/bundler-1.0.10/lib/bundler/vendor/thor/task.rb:22:in `run'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/bundler-1.0.10/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/bundler-1.0.10/lib/bundler/vendor/thor.rb:246:in `dispatch'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/bundler-1.0.10/lib/bundler/vendor/thor/base.rb:389:in `start'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/gems/bundler-1.0.10/bin/bundle:13:in `<top (required)>'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/bin/bundle:19:in `load'
    from /home/oo/.rvm/gems/ruby-1.9.2-p180@rails3tutorial/bin/bundle:19:in `<main>'

Я использую Ubuntu 10.10


person OoTheNigerian    schedule 10.03.2011    source источник
comment
возможный дубликат ошибки установки stackoverflow.com/questions/3458602 /   -  person Groovetrain    schedule 10.03.2011


Ответы (2)


Вам не хватает общих библиотек для установки sqlite3.

Вероятно, одна вещь, о которой вам не говорят большинство инструкций или руководств по установке ROR, - это то, что при работе в Linux вам нужны общие библиотеки, или если ваша dll для пользователя Windows отсутствует или несовместима с версией, которую вы пытаетесь запустить.

Я вижу, вы тоже используете RVM. Так что вам стоит попробовать это.

sudo apt-get install libsqlite3-dev
sudo gem install sqlite3-ruby

Если у вас все еще есть проблемы с установкой гема, попробуйте это - бросьте sudo в строку и просто установите гем.

gem install sqlite3-ruby -- --with-sqlite3-dir=/usr/local/lib

Кроме того, не помешает обновить все ваши библиотеки для Ubuntu.

Сначала запустите это перед запуском библиотек для sqlite3:

sudo apt-get update
sudo apt-get upgrade

Для запуска обновления и обновления, вероятно, потребуется несколько минут. Вы также можете запустить это из области Админ -> Система. Есть меню, которое позволяет запускать все обновления библиотеки и проверять зависимости, которые могут отсутствовать.

Вы также можете запустить установку sqlite из графического интерфейса системных приложений, так как он будет проверять программы зависимостей, которые также могут потребоваться.

Просто помните, что если что-то не устанавливается, как проблема с Ruby on Rails, это обычно означает, что библиотеки отсутствуют или требуется неправильная версия.

person IanN    schedule 10.03.2011
comment
@ianN Я успешно выполнил «sudo apt-get update sudo apt-get upgrade» и «sudo apt-get install libsqlite3-dev». Но когда я сделал «sudo gem install sqlite3-ruby», я получил ответ «sudo: gem: command not found» - person OoTheNigerian; 10.03.2011
comment
@OoTheNigerian - извини, дружище, забыл, что у тебя RVM. Я обновил свой ответ для вас - person IanN; 10.03.2011
comment
@IanN. Я не могу заметить внесенное вами изменение. извините за беспокойство. - person OoTheNigerian; 10.03.2011
comment
@OoTheNigerian - я добавил новую строку в sudo gem install sqlite3-ruby - --with-sqlite3-dir = ..... - person IanN; 10.03.2011
comment
Работал как шарм. Спасибо за связку @IanN. Я официально люблю StackOverflow. - person OoTheNigerian; 10.03.2011
comment
При использовании RVM нельзя использовать sudo для установки гемов. sudo изменяет среду, поэтому гем будет установлен в среду пользователя root. - person the Tin Man; 11.03.2011