运行 捆绑包安装时 sqlite3 出错
Error with sqlite3 when running bundle install
所以我在新创建的 Rails 应用程序中尝试 运行 bundle install
时遇到此错误:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -r ./siteconf20150114-6877-1x6zk4k.rb extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 is missing. Try 'port install sqlite3 +universal',
'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-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/
--with-sqlite3lib
--without-sqlite3lib
extconf failed, exit code 1
Gem files will remain installed in /var/folders/mc/qsk02mn50x96msk9zjxgzbmh0000gn/T/bundler20150114-6877-jsv17e/sqlite3-1.3.10/gems/sqlite3-1.3.10 for inspection.
Results logged to /var/folders/mc/qsk02mn50x96msk9zjxgzbmh0000gn/T/bundler20150114-6877-jsv17e/sqlite3-1.3.10/extensions/universal-darwin-14/2.0.0/sqlite3-1.3.10/gem_make.out
An error occurred while installing sqlite3 (1.3.10), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.10'` succeeds before bundling.
我当前的sqlite3版本:
3.8.7.4 2014-12-09 01:34:36 f66f7a17b78ba617acde90fc810107f34f1a1f2e
Ruby:
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
酿造:
0.9.5
更多信息:
$ which sqlite3
/usr/local/bin/sqlite3
$ whereis sqlite3
/usr/bin/sqlite3
这与 Ruby 2.0 和我的 OS X 附带的默认 Ruby 1.8 的冲突有什么关系吗?我正在使用 OS X 10.10.
我该如何解决这个问题?非常感谢!
尝试在您的控制台中安装它们:
安装 brew:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)""
# Add Homebrews binary path to the front of the $PATH
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile
brew install sqlite3
brew install libsqlite3-dev
bundle install
请检查 this link !
检查你的 sqlite 安装位置和 运行 下面的命令(我假设 /opt/local 这里)
gem install sqlite3 -- --with-sqlite3-dir=/opt/local
然后
bundle install
所以我找到了解决方案:只需(手动)卸载计算机中任何现有版本的 sqlite3。我所做的是:
- 运行
which -a sqlite3
找出安装 sqlite3 的目录(对我来说有 4 个版本 O.o)。删除所有这些 sqlite3 文件(通过 rm)
- 手动删除
/usr/local/lib
、usr/local/bin
和usr/local/include
中的所有sqlite相关文件
全部删除后,再次运行bundle install
到你的应用目录,会自动安装需要的sqlite3版本。
$bundle install
Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies...
// Using a bunch of gems
Installing sqlite3 1.3.10
Installing turbolinks 2.5.3
Installing uglifier 2.7.0
Installing web-console 2.0.0
Your bundle is complete!
Use 'bundle show [gemname]' to see where a bundled gem is installed.
如果您遇到与我相同的问题,我希望这可以节省您的一些时间。谢谢!
当您尝试创建新项目时,rails 尝试使用最新版本的 rails 创建。因此, bundle install 引发了一些错误。
创建新项目时,可以指定 rails 的版本,已安装到 OS X,如下所示。
$ rails -v
Rails 4.x.x
之后,您可以像下面这样创建新项目。
$ rails _4.x.x_ new PROJECT_NAME
我只是添加了我自己的解决方案供其他人尝试,以防上述方法对他们不起作用。
我不得不 brew uninstall sqlite3 然后我不得不从 rails 应用程序目录中删除 sqlite3s。
使用sudo rm -fr {app_route}/vendor/bundle/ruby/2.3.0/gems/sqlite3-1.3.13/
然后使用bundle install
重新安装sqlite3。
这在 Dockerfile
debian 风格的背景下对我有用:
apt-get install -y sqlite3 libsqlite3-dev
gem install sqlite3 # or: `bundle install`
.. 成功了!
所以我在新创建的 Rails 应用程序中尝试 运行 bundle install
时遇到此错误:
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -r ./siteconf20150114-6877-1x6zk4k.rb extconf.rb
checking for sqlite3.h... yes
checking for sqlite3_libversion_number() in -lsqlite3... no
sqlite3 is missing. Try 'port install sqlite3 +universal',
'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-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/
--with-sqlite3lib
--without-sqlite3lib
extconf failed, exit code 1
Gem files will remain installed in /var/folders/mc/qsk02mn50x96msk9zjxgzbmh0000gn/T/bundler20150114-6877-jsv17e/sqlite3-1.3.10/gems/sqlite3-1.3.10 for inspection.
Results logged to /var/folders/mc/qsk02mn50x96msk9zjxgzbmh0000gn/T/bundler20150114-6877-jsv17e/sqlite3-1.3.10/extensions/universal-darwin-14/2.0.0/sqlite3-1.3.10/gem_make.out
An error occurred while installing sqlite3 (1.3.10), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.10'` succeeds before bundling.
我当前的sqlite3版本:
3.8.7.4 2014-12-09 01:34:36 f66f7a17b78ba617acde90fc810107f34f1a1f2e
Ruby:
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]
酿造:
0.9.5
更多信息:
$ which sqlite3
/usr/local/bin/sqlite3
$ whereis sqlite3
/usr/bin/sqlite3
这与 Ruby 2.0 和我的 OS X 附带的默认 Ruby 1.8 的冲突有什么关系吗?我正在使用 OS X 10.10.
我该如何解决这个问题?非常感谢!
尝试在您的控制台中安装它们:
安装 brew:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)""
# Add Homebrews binary path to the front of the $PATH
echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile
brew install sqlite3
brew install libsqlite3-dev
bundle install
请检查 this link !
检查你的 sqlite 安装位置和 运行 下面的命令(我假设 /opt/local 这里)
gem install sqlite3 -- --with-sqlite3-dir=/opt/local
然后
bundle install
所以我找到了解决方案:只需(手动)卸载计算机中任何现有版本的 sqlite3。我所做的是:
- 运行
which -a sqlite3
找出安装 sqlite3 的目录(对我来说有 4 个版本 O.o)。删除所有这些 sqlite3 文件(通过 rm) - 手动删除
/usr/local/lib
、usr/local/bin
和usr/local/include
中的所有sqlite相关文件
全部删除后,再次运行
bundle install
到你的应用目录,会自动安装需要的sqlite3版本。$bundle install Fetching gem metadata from https://rubygems.org/.......... Resolving dependencies... // Using a bunch of gems Installing sqlite3 1.3.10 Installing turbolinks 2.5.3 Installing uglifier 2.7.0 Installing web-console 2.0.0 Your bundle is complete! Use 'bundle show [gemname]' to see where a bundled gem is installed.
如果您遇到与我相同的问题,我希望这可以节省您的一些时间。谢谢!
当您尝试创建新项目时,rails 尝试使用最新版本的 rails 创建。因此, bundle install 引发了一些错误。
创建新项目时,可以指定 rails 的版本,已安装到 OS X,如下所示。
$ rails -v
Rails 4.x.x
之后,您可以像下面这样创建新项目。
$ rails _4.x.x_ new PROJECT_NAME
我只是添加了我自己的解决方案供其他人尝试,以防上述方法对他们不起作用。
我不得不 brew uninstall sqlite3 然后我不得不从 rails 应用程序目录中删除 sqlite3s。
使用sudo rm -fr {app_route}/vendor/bundle/ruby/2.3.0/gems/sqlite3-1.3.13/
然后使用bundle install
重新安装sqlite3。
这在 Dockerfile
debian 风格的背景下对我有用:
apt-get install -y sqlite3 libsqlite3-dev
gem install sqlite3 # or: `bundle install`
.. 成功了!