安装mysql2(0.4.8)时出错,Bundler无法继续
An error occurred while installing mysql2 (0.4.8), and Bundler cannot continue
如何修复 ruby on rail 中的这个错误。
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'
我 运行 'bundle install' 并且发生了这个错误。
所以为了修复项目的错误,我在控制台中 运行 'gem install mysql2 '0.4.8'' 命令但我无法修复它。
rails 上的 ruby 使用 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
我 运行 'bundle install' 但由于这个错误我无法成功执行此命令。
我想你缺少 mysql 的开发库:
上ubuntu
sudo apt-get install libmysqlclient-dev
On Red Hat/CentOS 和其他使用 yum 的发行版:
sudo yum install mysql-devel
在 Mac OS X 上使用 Homebrew:
brew install mysql
我遇到了类似的问题,但对于 v4.10
Error occurred while installing mysql2 (0.4.10), and Bundler cannot continue
所以我不得不运行以下命令来解决上述问题。
sudo apt-get update
sudo apt-get install build-essential
对于 Mac,我遇到了 openssl issue
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
我使用如下命令解决了这个问题;
$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
$ sudo bundle install
控制台结果:
Fetching mysql2 0.5.2
Installing mysql2 0.5.2 with native extensions
Using puma 3.12.0
Using sprockets 3.7.2
Using sprockets-rails 3.2.1
Fetching rails 5.2.2.1
Installing rails 5.2.2.1
Using rubyzip 1.2.2
Using sass-listen 4.0.0
Using sass 3.7.3
Using tilt 2.0.9
Using sass-rails 5.0.7
Using selenium-webdriver 3.141.0
Using spring 2.0.2
Using spring-watcher-listen 2.0.1
Using turbolinks-source 5.2.0
Using turbolinks 5.2.0
Using uglifier 4.1.20
Using web-console 3.7.0
Bundle complete! 18 Gemfile dependencies, 79 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
替代解决方案
if you still have error and got the message in the console that: You are replacing the current
local value of build.mysql2, which is currently nil
. Please try as below:
$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"
然后运行:
$ 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
显示结果:
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
最后,运行 在您的项目中安装包:
$ sudo bundle install
让我知道它是否可以拯救你的一天!!! :)
如果您使用 mac,请确保先安装 openSSL。
brew install openssl
然后导出
$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"
确保您已安装 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
然后运行捆绑
bundle install
我的头发几乎掉光了,因为我买了一个新的 machine,我不记得我必须安装 openssl。
Ubuntu 18
您可能需要安装
sudo apt-get install libssl-dev
如 This 答案
MacOS 蒙特雷 (M1)
lib
和 include
文件的位置在 Homebrew 中已更改。我使用 this guidance 设置了正确的安装路径。
我首先使用此 procedure 刷新我的 Ruby 和 Rails 安装。这将安装 openssl
依赖项。
$ export LIBRARY_PATH=$LIBRARY_PATH:$(brew --prefix openssl@1.1)/lib/
仔细检查我的 mysql
安装后,我遇到了最后一个障碍,zstd
阻止了构建。我使用(归功于 )修复了此问题:
bundle config --local build.mysql2 \
"--with-ldflags=-L/opt/homebrew/Cellar/zstd/1.5.0/lib"
您现在已阅读 运行 再次打包
bundle install
我找到了 mysql 的路径,它是通过自制软件和 运行 以下命令安装的:
gem install mysql2 -- \
--with-mysql-lib=/opt/homebrew/Cellar/mysql/8.0.27/lib \
--with-mysql-dir=/opt/homebrew/Cellar/mysql/8.0.27 \
--with-mysql-config=/opt/homebrew/Cellar/mysql/8.0.27/bin/mysql_config \
--with-mysql-include=/opt/homebrew/Cellar/mysql/8.0.27/include
替换 mysql 的路径,应该可以解决问题。
对于使用macOS Monterey(M1Pro/Max)的人,我找到了一个简单快速的解决方案:
复制并粘贴到您的终端
arch -x86_64 gem install mysql2 -v 0.5.3 -- --srcdir=/usr/local/mysql/include
现在您可以 运行 bundle
而不会出现任何 MySql
错误
也使用 macOS Monterey,这对我有用:
gem install mysql2 -- --srcdir=/usr/local/mysql/include
如何修复 ruby on rail 中的这个错误。
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'
我 运行 'bundle install' 并且发生了这个错误。 所以为了修复项目的错误,我在控制台中 运行 'gem install mysql2 '0.4.8'' 命令但我无法修复它。
rails 上的 ruby 使用 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
我 运行 'bundle install' 但由于这个错误我无法成功执行此命令。
我想你缺少 mysql 的开发库:
上ubuntu
sudo apt-get install libmysqlclient-dev
On Red Hat/CentOS 和其他使用 yum 的发行版:
sudo yum install mysql-devel
在 Mac OS X 上使用 Homebrew:
brew install mysql
我遇到了类似的问题,但对于 v4.10
Error occurred while installing mysql2 (0.4.10), and Bundler cannot continue
所以我不得不运行以下命令来解决上述问题。
sudo apt-get update
sudo apt-get install build-essential
对于 Mac,我遇到了 openssl issue
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
我使用如下命令解决了这个问题;
$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
$ sudo bundle install
控制台结果:
Fetching mysql2 0.5.2
Installing mysql2 0.5.2 with native extensions
Using puma 3.12.0
Using sprockets 3.7.2
Using sprockets-rails 3.2.1
Fetching rails 5.2.2.1
Installing rails 5.2.2.1
Using rubyzip 1.2.2
Using sass-listen 4.0.0
Using sass 3.7.3
Using tilt 2.0.9
Using sass-rails 5.0.7
Using selenium-webdriver 3.141.0
Using spring 2.0.2
Using spring-watcher-listen 2.0.1
Using turbolinks-source 5.2.0
Using turbolinks 5.2.0
Using uglifier 4.1.20
Using web-console 3.7.0
Bundle complete! 18 Gemfile dependencies, 79 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
替代解决方案
if you still have error and got the message in the console that:
You are replacing the current local value of build.mysql2, which is currently nil
. Please try as below:
$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"
然后运行:
$ 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
显示结果:
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
最后,运行 在您的项目中安装包:
$ sudo bundle install
让我知道它是否可以拯救你的一天!!! :)
如果您使用 mac,请确保先安装 openSSL。
brew install openssl
然后导出
$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"
确保您已安装 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
然后运行捆绑
bundle install
我的头发几乎掉光了,因为我买了一个新的 machine,我不记得我必须安装 openssl。
Ubuntu 18
您可能需要安装
sudo apt-get install libssl-dev
如 This 答案
MacOS 蒙特雷 (M1)
lib
和 include
文件的位置在 Homebrew 中已更改。我使用 this guidance 设置了正确的安装路径。
我首先使用此 procedure 刷新我的 Ruby 和 Rails 安装。这将安装 openssl
依赖项。
$ export LIBRARY_PATH=$LIBRARY_PATH:$(brew --prefix openssl@1.1)/lib/
仔细检查我的 mysql
安装后,我遇到了最后一个障碍,zstd
阻止了构建。我使用(归功于
bundle config --local build.mysql2 \
"--with-ldflags=-L/opt/homebrew/Cellar/zstd/1.5.0/lib"
您现在已阅读 运行 再次打包
bundle install
我找到了 mysql 的路径,它是通过自制软件和 运行 以下命令安装的:
gem install mysql2 -- \
--with-mysql-lib=/opt/homebrew/Cellar/mysql/8.0.27/lib \
--with-mysql-dir=/opt/homebrew/Cellar/mysql/8.0.27 \
--with-mysql-config=/opt/homebrew/Cellar/mysql/8.0.27/bin/mysql_config \
--with-mysql-include=/opt/homebrew/Cellar/mysql/8.0.27/include
替换 mysql 的路径,应该可以解决问题。
对于使用macOS Monterey(M1Pro/Max)的人,我找到了一个简单快速的解决方案:
复制并粘贴到您的终端
arch -x86_64 gem install mysql2 -v 0.5.3 -- --srcdir=/usr/local/mysql/include
现在您可以 运行 bundle
而不会出现任何 MySql
错误
也使用 macOS Monterey,这对我有用:
gem install mysql2 -- --srcdir=/usr/local/mysql/include