Edited at

Debian StretchにRailsがすんなり入らない時のメモ

More than 1 year has passed since last update.

$ sudo apt install ruby sqlite3

$ sudo gem install rails

この後OSに死ぬほど怒られた


mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h で怒られる


事象

$ sudo gem install rails

Building native extensions. This could take a while...
ERROR: Error installing rails:
ERROR: Failed to build gem native extension.
current directory: /var/lib/gems/2.3.0/gems/nokogiri-1.8.0/ext/nokogiri
/usr/bin/ruby2.3 -r ./siteconf20170814-1797-1ktxt56.rb extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h
extconf failed, exit code 1
Gem files will remain installed in /var/lib/gems/2.3.0/gems/nokogiri-1.8.0 for inspection.
Results logged to /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/nokogiri-1.8.0/gem_make.out


確認すべきところと解決策


1. RubyとRubygemsのバージョンを確認する

Rails 5.1.3は Ruby 2.2.2、Rubygems 1.8.11以上が要求されている。

$ ruby --version

ruby 2.3.3p222 (2016-11-21) [x86_64-linux-gnu]
$ gem --version
2.5.2

aptから降って来るRubyが古い。。。(いつもの話


2. ruby-devを入れる。

mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

mkmfと呼ばれるライブラリに ruby.h が含まれていないことに起因するエラー。

ruby-dev(CentOSならば ruby-devel) をインストールすると解消する。

sudo apt install ruby-dev


checking if the C compiler accepts ... *** extconf.rb failed *** で怒られる


事象

$ sudo gem install rails

Building native extensions. This could take a while...
ERROR: Error installing rails:
ERROR: Failed to build gem native extension.
current directory: /var/lib/gems/2.3.0/gems/nokogiri-1.8.0/ext/nokogiri
/usr/bin/ruby2.3 -r ./siteconf20170814-1913-1ni2g2j.rb extconf.rb
checking if the C compiler accepts ... *** 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.

Cコンパイラ系のエラーっぽい。


解決策


build-essential をインストール

調べたらそもそもmkmfがMakefileを作るやつとのことだったので、

makeやらCやらC++が一式入ってないとまともに動かないだろうと判断。

sudo apt-get install build-essential

困ったときの build-essentialで解決。


zlib is missing; necessary for building libxml2 で怒られる


事象

ERROR:  Error installing rails:

ERROR: Failed to build gem native extension.

current directory: /var/lib/gems/2.3.0/gems/nokogiri-1.8.0/ext/nokogiri
/usr/bin/ruby2.3 -r ./siteconf20170814-7887-bxemei.rb extconf.rb
checking if the C compiler accepts ... yes
Building nokogiri using packaged libraries.
Using mini_portile version 2.2.0
checking for gzdopen() in -lz... no
zlib is missing; necessary for building libxml2
*** 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.

zlibが無いらしい。


解決策


zlib1g-dev をインストールする。

$ sudo apt install zlib1g-dev

これで解決した。