nFact

n!

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

$ 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. RubyRubygemsのバージョンを確認する

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

これで解決した。


私のQiitaより転載した記事になります。

qiita.com