安装mysql2(0.4.8)时发生错误,Bundler无法继续

11 ruby-on-rails spree

如何在轨道上的ruby中修复此错误.

source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.0.2'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
gem 'mysql 2', '0.4.8'
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platform: :mri
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '~> 3.0.5'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

gem 'spree', '~> 3.2.1'
gem 'spree_auth_devise', github: 'spree/spree_auth_devise'
gem 'spree_gateway', github: 'spree/spree_gateway'
gem 'spree_i18n', github: 'spree-contrib/spree_i18n', branch: 'master'
Run Code Online (Sandbox Code Playgroud)

我运行'bundle install'并发生了这个错误.所以为了修复项目的错误,我在控制台中运行了'gem install mysql2'0.4.8''命令,但我无法解决它.

这个ruby on rails使用Spree框架.

编辑:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/admin/.rvm/gems/ruby-2.4.1/gems/mysql2-0.4.8/ext/mysql2
/Users/admin/.rvm/rubies/ruby-2.4.1/bin/ruby -r ./siteconf20170803-6579-foq4sg.rb extconf.rb
checking for rb_absint_size()... yes
Run Code Online (Sandbox Code Playgroud)

我运行'捆绑安装',但由于此错误,我无法成功执行此命令.

Tom*_*ela 43

我想你错过了mysql的dev库:

在ubuntu上

sudo apt-get install libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)

在Red Hat/CentOS和其他使用yum的发行版上:

sudo yum install mysql-devel
Run Code Online (Sandbox Code Playgroud)

在Mac OS X上使用Homebrew:

brew install mysql
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回答。在 Mac OS 上,我运行命令“brew install mysql”,然后运行“bundle install”。现在没有错误了。 (3认同)
  • 现在是`sudo apt-get install default-libmysqlclient-dev` (2认同)
  • 我在 mac bigsur 但仍然遇到错误 (2认同)

Sen*_*kha 17

对于Mac,我遇到了openssl问题

An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Run Code Online (Sandbox Code Playgroud)

我修复了这个问题使用命令,如下所示;

$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
Run Code Online (Sandbox Code Playgroud)
$ sudo bundle install
Run Code Online (Sandbox Code Playgroud)

控制台结果:

$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
Run Code Online (Sandbox Code Playgroud)

替代解决

如果您仍然有错误并在控制台中看到以下消息:You are replacing the current local value of build.mysql2, which is currently nil。请尝试以下方法:

$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"
Run Code Online (Sandbox Code Playgroud)

然后运行:

$ sudo gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/' -- --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib
Run Code Online (Sandbox Code Playgroud)

显示结果:

Building native extensions with: '--with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib'
This could take a while...
Successfully installed mysql2-0.5.2
Parsing documentation for mysql2-0.5.2
Installing ri documentation for mysql2-0.5.2
Done installing documentation for mysql2 after 0 seconds
1 gem installed
Run Code Online (Sandbox Code Playgroud)

最后,在您的项目中运行bundle install:

$ sudo bundle install
Run Code Online (Sandbox Code Playgroud)

让我知道这是否可以节省您的时间!!!:)


saa*_*ulu 15

如果您使用的是 mac,请确保首先安装了 openSSL。

brew install openssl
Run Code Online (Sandbox Code Playgroud)

然后导出

$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"
Run Code Online (Sandbox Code Playgroud)

确保你已经安装了 mysql

gem install mysql2 -v '0.5.3' \
  --source 'https://rubygems.org/' -- \
  --with-cppflags=-I/usr/local/opt/openssl/include \
  --with-ldflags=-L/usr/local/opt/openssl/lib
Run Code Online (Sandbox Code Playgroud)

然后运行包

bundle install
Run Code Online (Sandbox Code Playgroud)

我几乎失去了我剩下的头发,因为我有了一台新机器,我不记得我必须安装 openssl。

  • 谢谢,在这里节省了一些头发 (2认同)

Ant*_*yev 5

对于使用macOS Monterey (M1 Pro/Max) 的人来说,我找到了一个简单快速的解决方案:

将其复制并粘贴到您的终端中

arch -x86_64 gem install mysql2 -v 0.5.3 -- --srcdir=/usr/local/mysql/include
Run Code Online (Sandbox Code Playgroud)

现在你可以运行bundle而不会出现任何MySql错误