如何在使用RVM的Ruby on Rails中安装SQlite3?

9
我是一名新手程序员,对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操作系统。


可能是 https://dev59.com/jHA75IYBdhLWcg3wH1XP 的重复问题。 - Groovetrain
2个回答

8

您缺少安装sqlite3所需的共享库。

可能大多数ROR安装说明或教程没有告诉您的一件事是,在Linux上运行时,您需要共享库,如果您是Windows用户,则缺少dll文件或与您尝试运行的版本不兼容。

我看到您也在运行RVM。因此,您应该尝试以下操作。

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

如果您安装 gem 仍然有问题,请尝试以下方法-删除行中的 sudo,只运行 gem install 命令。
gem install sqlite3-ruby -- --with-sqlite3-dir=/usr/local/lib

此外,更新 Ubuntu 的所有库也是个好习惯。

在运行 sqlite3 库之前,请先运行以下命令:

sudo apt-get update
sudo apt-get upgrade

运行更新和升级可能需要几分钟时间。您还可以从管理员-->系统区域运行此操作。有一个菜单可以让您运行所有库的更新,并检查可能缺失的依赖项。

您还可以从系统应用程序GUI运行sqlite安装,因为它将检查可能需要的依赖程序。

请记住,当某些内容无法安装时,例如您在Ruby on Rails中遇到的问题,通常意味着缺少库或所需版本不正确。


@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'。 - OoTheNigerian
@OoTheNigerian - 抱歉伙计,我忘记你在运行RVM。我已经为你更新了我的答案。 - IanN
@IanN,我没有注意到你所做的更改。很抱歉打扰了你。 - OoTheNigerian
@OoTheNigerian - 我在 sudo gem install sqlite3-ruby -- --with-sqlite3-dir=..... 下添加了一行新代码。 - IanN
运行得非常好。感谢@IanN的帮助。我正式爱上了StackOverflow。 - OoTheNigerian
当使用RVM时,不能使用sudo安装gemssudo会改变环境,因此gem将被安装到root用户的环境中。 - the Tin Man

0

这里有一个更好的答案来自HEROKU - 无法运行 git push heroku master

由于在heroku上不能使用sqlite3,因此请将以下内容添加到您的Gemfile中:

group :production do
  gem 'pg'
end
group :development, :test do
  gem 'sqlite3'
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接