在Ubuntu上安装sqlite3-ruby安装错误


257

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

构建本机扩展。这可能需要一段时间...
错误:安装sqlite3-ruby时出错:
    错误:无法生成gem本机扩展。

/usr/bin/ruby1.8 extconf.rb
正在检查sqlite3.h ...否
sqlite3.h丢失。试试'port install sqlite3 + universal'或'yum install sqlite3-devel'
*** extconf.rb失败***
由于某些原因(可能缺少)而无法创建Makefile
必要的库和/或标头。检查mkmf.log文件以获取更多信息
细节。您可能需要配置选项。

提供的配置选项:
    --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
    --with-make-prog
    --srcdir =。
    --curdir
    --ruby = / usr / bin / ruby​​1.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


宝石文件将保留安装在/usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.3.1中以进行检查。
结果记录到/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

不起作用

错误:执行gem时...(OptionParser :: InvalidOption)
    无效的选项:--without-sqlite3-include = / usr / include

Ubuntu 10.04


同样的问题-无法解决。sqlite3.h不存在,并且已安装所有上述软件包。ubunut 10.10
rrt 2011年

尝试sudo apt-get install build-essential,然后sudo gem install sqlite3-ruby
Dmitry

1
从那以后它变成了正义sqlite3,而不是sqlite3-ruby
凯洛蒂2011年

3
按照marshluca的建议为我在ubuntu 12.04上工作。sudo apt-get install libsqlite3-dev
panta 2012年

Answers:


585

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

apt-get install libsqlite3-dev

26
我需要sudo apt-get install libsqlite3-dev。谢谢。
B

6
像魅力一样工作。谢谢。
frank.m 2012年

谢谢,这绝对不是显而易见的。
james_womack

15

您只需要--在那里。

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

这指定选项不是直接显示gem,而是特定gem。



6

如果您在ubuntu中运行,并使用RVM在导轨上使用红宝石,请添加FIRST:

sudo apt-get install libxslt-dev libxml2-dev

或者您可以使用以下命令进行检查:

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

须藤apt-get install sqlite3 libsqlite3-dev

-现在,安装sqlite gem

 [sudo] gem install sqlite3-ruby

-使用Ubuntu不需要sudo。

祝好运!注意:我正在使用Ubuntu 10.10,并且可以正常工作。




4

尝试了所有其他解决方案,但无济于事。

原来,您还需要ruby本身的dev软件包。对我来说,它有所帮助

sudo apt-get install ruby-full

它有很多讨厌的依赖项(例如emacs,wtf?),只是

sudo apt-get install ruby1.8-dev

应该没事。安装之后(并且您已经安装了sqlite和sqlite-dev软件包)

sudo gem install sqlite3-ruby

奇迹般有效。


1
也为我工作。sudo apt-get install ruby​​1.9.1-dev libsqlite3-dev
rajsite


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



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

这正是我所需要的-非常感谢此提交者!
David Loy 2014年

0

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


如果sqlite3.h确实丢失并且不在您所说的/ usr / include中,则可以使用以下命令安装它:sudo apt-get install libsqlite3-dev
Kurt 2010年

我已经这样做了。这没有帮助。我安装了sqlite3和libsqlite3-dev。
德米特里(Dmitry)2010年

0

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


0

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

sudo apt-get install ruby1.8-dev

感谢有思想的那一位。


0

我同意Danya VershininEnotionZ的观点

如果不能使用apt-get:

  1. 通过指定自己的“前缀”路径从源代码编译和安装sqlite3。更多信息可以在自述文件中找到。
  2. 然后将此路径传递给sqlite3-ruby安装程序(不要忘记“-”)。

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稳定--ruby --autolibs = enable --auto-dotfiles如果发现需要一些帮助,请看一下在Ubuntu 12.04上安装Ruby,它提供了更多说明。



0

上述解决方案对我都不起作用,即使在安装ruby2.5-dev和之后也是如此libsqlite3-dev。然后尝试使用PostgreSql代替sqlite。很好。要使用PostgreSql代替sqlite的方法在创建rails项目时使用此命令。

rails [_VERSION_] new project_name -d postgresql

如果要使用,请MySql使用mysql代替postgresql

rails [_VERSION_] new project_name -d mysql

否则,您可以尝试sqlite

bundle install --without sqlite

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.