Search code examples
ruby-on-railsrubyrubygemsbundlebundler

Bundle Install failed due to : Gem::Ext::BuildError: ERROR: Failed to build gem native extension


I am a newbie to ruby language and I'm trying to run an existing ruby on rails project. While am trying to run bundle install it fails with the following error.

Fetching mysql2 0.4.6
Installing mysql2 0.4.6 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /home/vince/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/mysql2-0.4.6/ext/mysql2
/home/vince/.rbenv/versions/2.7.6/bin/ruby -I /home/vince/.rbenv/versions/2.7.6/lib/ruby/2.7.0 -r ./siteconf20221031-7332-kotkbi.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
checking for rb_big_cmp()... yes
*** 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=/home/vince/.rbenv/versions/2.7.6/bin/$(RUBY_BASE_NAME)
        --with-ruby-dir
        --without-ruby-dir
        --with-ruby-include
        --without-ruby-include=${ruby-dir}/include
        --with-ruby-lib
        --without-ruby-lib=${ruby-dir}/lib
        --with-mysql-dir
        --without-mysql-dir
        --with-mysql-include
        --without-mysql-include=${mysql-dir}/include
        --with-mysql-lib
        --without-mysql-lib=${mysql-dir}/lib
        --with-mysql-config
        --without-mysql-config
        --with-mysqlclient-dir
        --without-mysqlclient-dir
        --with-mysqlclient-include
        --without-mysqlclient-include=${mysqlclient-dir}/include
        --with-mysqlclient-lib
        --without-mysqlclient-lib=${mysqlclient-dir}/lib
        --with-mysqlclientlib
        --without-mysqlclientlib
/home/vince/.rbenv/versions/2.7.6/lib/ruby/2.7.0/mkmf.rb:1050:in `block in find_library': undefined method `split' for nil:NilClass (NoMethodError)
        from /home/vince/.rbenv/versions/2.7.6/lib/ruby/2.7.0/mkmf.rb:1050:in `collect'
        from /home/vince/.rbenv/versions/2.7.6/lib/ruby/2.7.0/mkmf.rb:1050:in `find_library'
        from extconf.rb:95:in `<main>'

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /home/vince/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0/mysql2-0.4.6/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/vince/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/gems/mysql2-0.4.6 for inspection.
Results logged to /home/vince/.rbenv/versions/2.7.6/lib/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0/mysql2-0.4.6/gem_make.out

An error occurred while installing mysql2 (0.4.6), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.4.6' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  mysql2

The ruby version is 2.7.6 , Rails 5.0.7.2, Environment Ubuntu 20.04

Does anyone know the cause of the issue and how it can be solved? I have tried with diffrent stack overflow answers and none of them helped.

Please let me know if you need any further details.

thank you.


Solution

  • You need to install mysql first via brew

    brew install mysql
    

    Then try to install the gem

    gem install mysql2
    

    After succeedd, please run bundle install again.