【问题标题】:After a new install, the SQLite3 old version persists (OS X)新安装后,旧版本的 SQLite3 仍然存在(OS X)
【发布时间】:2011-03-28 04:09:57
【问题描述】:

我在我的 macbook (OS X 10.5) 上安装了较新版本的 SQLite3 (3.7.0.1),但 'sqlite3 --version' 给了我系统上的旧版本:

$ sqlite3 --version
3.4.0

我想我希望这个版本会被覆盖,但事实并非如此。任何人都可以提示我吗?非常感谢,现在我正在尝试开始使用 Rails,但我收到了这个错误:

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

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
checking for #include <sqlite3.h>
... yes
checking for sqlite3_libversion_number() in -lsqlite3... yes
checking for rb_proc_arity()... no
checking for sqlite3_initialize()... no
sqlite3-ruby only supports sqlite3 versions 3.6.16+, please upgrade!
*** 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.

奇怪的是,自从安装了新版本的 sqlite3 后,这个错误就消失了(换句话说,sqlite3-ruby 安装成功)——但 sqlite3 仍然指向 3.4.0,我检查了我的 $PATH 中的目录和它们只包含 3.7.0.1

提前感谢您的帮助。

【问题讨论】:

    标签: ruby macos unix sqlite


    【解决方案1】:

    您是否尝试过通过键入hash sqlite3 来告诉操作系统使用新操作系统?有时操作系统会记住原始版本并且不知道刷新自己,hash 会戳它的眼睛。

    否则,您可能需要告诉宝石寻找正确的位置。在安装程序中检查这些选项:

    --with-sqlite3-dir --with-sqlite3-include --with-sqlite3-lib

    【讨论】:

    • sqlite3 和 sqlite3-ruby 都已成功安装,在 sqlite3-ruby 的情况下,它找到了正确的 sqlite3,所以我完成了安装 - 我只是想知道为什么旧的安装没有被覆盖或删除?此外,我想知道它到底在哪里? (我已经检查了我的 $PATH 上的所有地方......它必须在某个地方?有没有命令 a la: 'sqlite3 --show-me-where-the-hell-it-is?)
    • 一般来说,安装程序不应该覆盖系统安装的包。他们安装它的地方通常有很好的理由,例如期望它存在的系统进程,并且在某个版本。如果您强制它们,包覆盖,但这可能导致机器无法正常工作。安装到 /usr/bin 是有风险的。 /usr/bin/local 或其他 .../local/ 路径相当安全,并且通过调整路径,您可以控制是否首先找到 .../local/ 版本。希望对您有所帮助。
    【解决方案2】:

    我在 CentOS 服务器上也遇到了同样的问题。我发现这个解决方案对我有用。希望对您有所帮助! http://amitava1.blogspot.com/2010/08/ruby-on-rails-on-centos-55-with.html

    主进程:

    $ wget http://www.sqlite.org/sqlite-amalgamation-3.7.0.1.tar.gz $ tar xvzf sqlite-amalgamation-3.7.0.1.tar.gz $ cd sqlite-3.7.0.1 $ ./configure --prefix=/opt/local/sqlite-3.7.0.1 $ 制作 $ sudo 安装 $ sudo /opt/ruby-enterprise-1.8.7-2010.02/bin/gem install sqlite3-ruby -- --with-sqlite3-dir=/opt/local/sqlite-3.7.0.1 构建原生扩展。这可能需要一段时间... 成功安装 sqlite3-ruby-1.3.1 已安装 1 个宝石

    【讨论】:

      猜你喜欢
      • 2014-12-04
      • 2011-08-14
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      相关资源
      最近更新 更多