无法在 Ubuntu 16.04 Xenial 中安装 gems "mysql2, mariadb 10.1"

Not able to install gems "mysql2, mariadb 10.1" in Ubuntu 16.04 Xenial

我有 mariadb 10.1 服务器。 我在 ubuntu 16.04 上安装 ruby 2.3.0。 我安装了 libmariadbd-dev 和 libmariadbclient-dev。 当我尝试 "gem install mysql2" 时,收到一条消息:

Building native extensions with: '--with-mysql-dir=/usr/local/mysql'
This could take a while...
ERROR:  Error installing mysql2:
        ERROR: Failed to build gem native extension.

    current directory: /var/lib/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2
/usr/bin/ruby2.3 -r ./siteconf20160615-5183-kj9yds.rb extconf.rb --with-mysql-dir=/usr/local/mysql
checking for ruby/thread.h... *** 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=/usr/bin/$(RUBY_BASE_NAME)2.3
/usr/lib/ruby/2.3.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
        from /usr/lib/ruby/2.3.0/mkmf.rb:587:in `try_cpp'
        from /usr/lib/ruby/2.3.0/mkmf.rb:1091:in `block in have_header'
        from /usr/lib/ruby/2.3.0/mkmf.rb:942:in `block in checking_for'
        from /usr/lib/ruby/2.3.0/mkmf.rb:350:in `block (2 levels) in postpone'
        from /usr/lib/ruby/2.3.0/mkmf.rb:320:in `open'
        from /usr/lib/ruby/2.3.0/mkmf.rb:350:in `block in postpone'
        from /usr/lib/ruby/2.3.0/mkmf.rb:320:in `open'
        from /usr/lib/ruby/2.3.0/mkmf.rb:346:in `postpone'
        from /usr/lib/ruby/2.3.0/mkmf.rb:941:in `checking_for'
        from /usr/lib/ruby/2.3.0/mkmf.rb:1090:in `have_header'
        from extconf.rb:16:in `<main>'

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

  /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/mysql2-0.4.4/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /var/lib/gems/2.3.0/gems/mysql2-0.4.4 for inspection.
Results logged to /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/mysql2-0.4.4/gem_make.out

而且我找不到如何构建这个 gem。

Gem 在这种情况下需要 3 个数据包。

sudo apt-get install libnetcdf-dev libssl-dev libcrypto++-dev

这是 mac 的,但您需要更改路径:

gem uninstall mysql2

intall mariadb 10.1 andnecesaary ssl packages 或者也许不需要 然后检查库的路径和 tinal 文件夹具有相同的名称:

bundle config --local build.mysql2 "--with-mysql-config=/usr/local/Cellar/mariadb@10.1/10.1.29/bin/mysql_config --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"

或没有 ssl 路径

bundle config --local build.mysql2 "--with-mysql-config=/usr/local/Cellar/mariadb@10.1/10.1.29/bin/mysql_config

或者直接 gem,但是如果你来自 mysql 最好用 bundle

gem install mysql2 -v 'x.y.z' -- --with-mysql-config=/usr/local/Cellar/mariadb@10.1/10.1.29/bin/mysql_config

最后

bundle install