Ruby Sqlite3安装sqlite3_libversion_number()macOS Sierra

我正在尝试安装Metasploit框架(不重要),而bundler正在尝试安装sqlite3,这是它一直失败的地方。 安装了Sqlite3(在命令行执行sqlite3将我带入环境)并使用brew link 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 

我终于通过在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 

我尝试指定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. ... 

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


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

 gem install sequel mysql sqlite3 -- --with-sqlite3-lib=/usr/lib 

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

 sequel mysql://homestead:secret@192.168.10.10:3306/my_database -C sqlite://my_database.sqlite 

这适用于Mac High Sierra OS 10.13

 gem install sqlite3 -- --with-sqlite3-lib=/usr/lib