在Ubuntu上sqlite3-ruby安装错误

时间:2010-08-11 13:11:58

标签: ruby ubuntu sqlite sqlite3-ruby

我在sqlite3-ruby安装期间出现以下错误:

Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
    ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal' or 'yum install sqlite3-devel'
*** 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=/usr/bin/ruby1.8
    --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 /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.3.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.3.1/ext/sqlite3/gem_make.out

sqlite3.h位于/ usr / include /

sudo gem install sqlite3-ruby --without-sqlite3-include=/usr/include

不起作用


ERROR:  While executing gem ... (OptionParser::InvalidOption)
    invalid option: --without-sqlite3-include=/usr/include

Ubuntu 10.04

19 个答案:

答案 0 :(得分:577)

您需要针对gem的本机扩展的SQLite3开发标头进行编译。您可以通过运行(可能使用sudo)来安装它们:

apt-get install libsqlite3-dev

答案 1 :(得分:14)

你只需要--

sudo gem install sqlite3-ruby -- --with-sqlite3-include=/usr/include

它指定该选项不是直接为gem,而是特定的gem。

答案 2 :(得分:8)

在我的情况下,我没有安装基本的编译器,所以

sudo apt-get install build-essential

解决了我的问题,但对于大多数人来说,我认为https://stackoverflow.com/a/3649005/417267是解决方案。

答案 3 :(得分:6)

这就是我所做的:

wget http://www.sqlite.org/sqlite-amalgamation-3.7.2.tar.gz
tar xzf sqlite-amalgamation-3.7.2.tar.gz
cd sqlite-3.7.2/

./configure
make
make install

gem install rails sqlite3-ruby

来自:http://cuasan.wordpress.com/2010/10/13/rails-3-on-debian-with-sqlite-3/

答案 4 :(得分:6)

这足以让它发挥作用

sudo apt-get install libsqlite3-dev

感谢marshluca

答案 5 :(得分:6)

如果您在ubuntu中运行,并在轨道上使用RVM for ruby​​,请添加FIRST:

sudo apt-get install libxslt-dev libxml2-dev

或者您可以查看以下命令:

此命令将为您准备两个软件包:sqllite3和libsqlite3-dev

  

sudo apt-get install sqlite3   libsqlite3-dev的

- 现在,安装sqlite gem

 [sudo] gem install sqlite3-ruby

- 使用Ubuntu不需要sudo。

古德勒克!注意:我正在使用Ubuntu 10.10并且它正在运行。

答案 6 :(得分:4)

尝试了所有其他解决方案,没有人帮忙。

原来你还需要dev包自己的ruby包。对我来说,这有帮助

sudo apt-get install ruby-full

它有很多讨厌的依赖关系(比如emacs,wtf?),只是

sudo apt-get install ruby1.8-dev

应该没问题。安装完成后(你安装了sqlite和sqlite-dev软件包)

sudo gem install sqlite3-ruby

就像一个魅力。

答案 7 :(得分:2)

以下是HEROKU - cannot run git push heroku master

的更好答案

由于你无法在heroku上使用sqlite3,请将其添加到你的Gemfile:

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

答案 8 :(得分:1)

有同样的问题,以下内容对我有用:

将sqlite3编译为静态库,安装在主目录中的某个位置,然后为gem安装过程提供该选项。

转到下载页面并获取源代码。目前最新版本为http://www.sqlite.org/sqlite-autoconf-3070400.tar.gz

文件中的tar -xf或执行您通常要解压缩的任何操作;输入目录

./ configure --disable-shared --enable-static --prefix = / some / path / in / my / home

编译,安装,以及安装gem时...

gem install sqlite3-ruby - --with-sqlite3-dir = / some / path / in / my / home

答案 9 :(得分:1)

来自sqlite3-ruby gem can't find sqlite3.h on ubuntu

您还需要安装gcc本身,所以总的来说是:

sudo apt-get install gcc libsqlite3-dev ruby1.8-dev
sudo gem install sqlite3

当实际问题缺少gcc本身时,显然你得到一个指向缺少sqlite3.h的错误错误。

答案 10 :(得分:1)

解决方案是将--添加到configure参数中的gem参数中。

而不是

sudo gem install sqlite3-ruby --without-sqlite3-include=/usr/include

尝试这一切,在一行中,确保在最后--参数之后和gem参数之前包含configure

sudo gem install sqlite3 --
--with-sqlite3-lib=/somewhere/local/lib
--with-sqlite3-include=/somewhere/local/include

这可以解决这个错误:

ERROR:  While executing gem ... (OptionParser::InvalidOption)
    invalid option: --without-sqlite3-include=/usr/include

答案 11 :(得分:0)

这是我几周前遇到的完全相同的问题。我发现我需要从SQLite下载页面下载最新的头文件/库。尝试一下,希望这有帮助!

答案 12 :(得分:0)

不是--without-sqlite3-include=/usr/include,而是--with-sqlite3-include=/usr/include

答案 13 :(得分:0)

对我来说,问题是通过获取mkmf来解决的,这是在ruby1.8-dev中。

sudo apt-get install ruby1.8-dev

感谢mentalized。{/ p>

答案 14 :(得分:0)

我同意Danya Vershinin& EnotionZ

如果不能使用apt-get:

  1. 编译&通过指定您自己的"前缀"从源安装sqlite3;路径。 更多信息可以在README中找到。
  2. 然后将此路径传递给sqlite3-ruby安装程序(不要忘记" - ")。

答案 15 :(得分:0)

你破坏了RVM的版本。 Ubuntu对产生大量错误的RVM做了一些事情,现在唯一安全的修复方法是:sudo apt-get --purge remove ruby​​-rvm sudo rm -rf / usr / share / ruby​​ ...,如果它没有帮助然后重新启动计算机。安装RVM:\ curl -L https://get.rvm.io | bash -s stable --ruby --autolibs = enable --auto-dotfiles如果你发现你需要一些手持,请看看在Ubuntu 12.04上安装Ruby,它提供了更多的解释

答案 16 :(得分:0)

忘掉一切,然后这样做,

运行

yum install ruby-devel sqlite sqlite-devel ruby-rdoc
yum install make gcc
gem install sqlite3-ruby
bundle install

对于rhel而言,为ubuntu运行相同。

答案 17 :(得分:0)

即使在安装libsqlite3-devPostgreSql之后,上述解决方案都不适用于我。然后尝试使用sqlite代替PostgreSql。这工作得很好。要在创建rails项目时使用rails [_VERSION_] new project_name -d postgresql 而不是sqlite,请使用此命令。

MySql

如果您想使用mysql,请使用postgresql代替rails [_VERSION_] new project_name -d mysql

sqlite

否则,您可以在没有bundle install --without sqlite 的情况下尝试。

{{1}}

答案 18 :(得分:0)

我刚刚降级为sqlite3-ruby'1.2.2'