Ruby Sqlite3安装sqlite3_libversion_number()macOS Sierra

Mat*_*ver 4 ruby sqlite ruby-on-rails

我正在尝试安装Metasploit框架(不重要),而bundler正在尝试安装sqlite3,这是它一直失败的地方.安装了Sqlite3(在命令行执行sqlite3将我带入环境)并使用brew link sqlite3(并出于某种原因添加--force )进行链接,但bundler install每次都出现此错误:

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

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
Error: Running Homebrew as root is extremely dangerous and no longer supported.
As Homebrew does not drop privileges on installation you would be giving all
build scripts full access to your system.
checking for sqlite3.h... yes
checking for pthread_create() in -lpthread... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 is missing. Try 'brew install sqlite3',
'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
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=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
    --with-sqlite3-config
    --without-sqlite3-config
    --with-pkg-config
    --without-pkg-config
    --with-sqlite3-dir
    --without-sqlite3-dir
    --with-sqlite3-include
    --without-sqlite3-include=${sqlite3-dir}/include
    --with-sqlite3-lib
    --without-sqlite3-lib=${sqlite3-dir}/
    --with-pthreadlib
    --without-pthreadlib
    --with-sqlite3lib
    --without-sqlite3lib


Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/sqlite3-1.3.12 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/sqlite3-1.3.12/ext/sqlite3/gem_make.out
Run Code Online (Sandbox Code Playgroud)

Zac*_*ris 18

我终于通过在macOS Sierra 10.12.5(16F73)上指定内置的Mac OS X sqlite库目录来解决这个问题:

$ whereis sqlite3
/usr/bin/sqlite3
# if binary is in /usr/bin then library is typically in /usr/lib
$ gem install sqlite3 -- --with-sqlite3-lib=/usr/lib
Building native extensions with: '--with-sqlite3-lib=/usr/lib'
This could take a while...
Successfully installed sqlite3-1.3.13
Parsing documentation for sqlite3-1.3.13
Done installing documentation for sqlite3 after 0 seconds
1 gem installed
Run Code Online (Sandbox Code Playgroud)

我尝试指定Homebrew库目录但由于某种原因它不起作用:

$ brew ls --verbose sqlite3
/usr/local/Cellar/sqlite/3.19.3/.brew/sqlite.rb
/usr/local/Cellar/sqlite/3.19.3/bin/sqlite3
/usr/local/Cellar/sqlite/3.19.3/include/msvc.h
/usr/local/Cellar/sqlite/3.19.3/include/sqlite3.h
/usr/local/Cellar/sqlite/3.19.3/include/sqlite3ext.h
/usr/local/Cellar/sqlite/3.19.3/INSTALL_RECEIPT.json
/usr/local/Cellar/sqlite/3.19.3/lib/libsqlite3.0.dylib
/usr/local/Cellar/sqlite/3.19.3/lib/libsqlite3.a
/usr/local/Cellar/sqlite/3.19.3/lib/libsqlite3.dylib
/usr/local/Cellar/sqlite/3.19.3/lib/pkgconfig/sqlite3.pc
/usr/local/Cellar/sqlite/3.19.3/README.txt
/usr/local/Cellar/sqlite/3.19.3/share/man/man1/sqlite3.1
$ gem install sqlite3 -- --with-sqlite3-lib=/usr/local/Cellar/sqlite/3.19.3/lib
This could take a while...
ERROR:  Error installing sqlite3:
    ERROR: Failed to build gem native extension.
...
Run Code Online (Sandbox Code Playgroud)

如果有人知道如何指定Homebrew库目录,请告诉我,因为这将提供更多的安装控制(据说MacPorts工作,但我不再使用它).


对于任何好奇的人来说,这是安装Ruby 续集的完整命令:

gem install sequel mysql sqlite3 -- --with-sqlite3-lib=/usr/lib
Run Code Online (Sandbox Code Playgroud)

以及如何将关于主机端口3306 的Laravel Homestead MySQL数据库转换为我对该问题的评论:

sequel mysql://homestead:secret@192.168.10.10:3306/my_database -C sqlite://my_database.sqlite
Run Code Online (Sandbox Code Playgroud)


小智 5

这适用于Mac High Sierra OS 10.13

gem install sqlite3 -- --with-sqlite3-lib=/usr/lib
Run Code Online (Sandbox Code Playgroud)

  • 终于对我有用了:`bundle config build.sqlite3 --with-sqlite3-include = $ HOME / include --with-sqlite3-lib = $ HOME / lib --with-sqlite3-dir = $ HOME / bin ` (2认同)