Windows環境にRailsのver.5をインストールようとしてやはりNokogiriでエラッたのでそれまでの軌跡をメモ
開発環境(予定)
OS:Windows7
Ruby:ruby 2.4.0p0
Rails:Rails 5.0.2
失敗の軌跡
1.Rubyをインストールする
ruby installer2より対象のRubyをダウンロードしてインストール
もちろん入れるのは最新のRuby 2.4
2. MSYS2を入れる
インストールして何も考えずにFinishを押下すると
MSYS2を入れるcmd.exeが現れるので、インストールしていない場合は1と入力しEnter(下図)
するとMSYS2のセットアップ画面が開くので、MSYS2をインストールする(下図)
ここでインストールが環境した後になにげにENTERを入力してWindowを閉じたのですが、
ここが罠というか失敗の原因っぽかったです。
MSYS2のインストールが終わったら、sqlite3/nokogiriをインストールする
# sqlite3
> ridk exec pacman -S mingw-w64-x86_64-sqlite3
> gem install sqlite3 --platform ruby
# Nokogiri
> ridk exec pacman -S mingw-w64-x86_64-libxslt
> gem install nokogiri --platform ruby -- --use-system-libraries --with-xml2-include=c:/msys64/mingw64/include/libxml2 --with-xslt-dir=c:/msys64/mingw64
と思ったらNokogiriがインストールできない
Error↓
C:\tools>gem install nokogiri -v 1.7.0.1 --platform ruby -- --use-system-libraries --with-xml2-include=c:/msys64/mingw64/include/libxml2 --with-xslt-dir=c:/msys64/mingw64
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions with: '--use-system-libraries --with-xml2-include=c:/msys64/mingw64/include/libxml2 --with-xslt-dir=c:/msys64/mingw64'
This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
current directory: C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/nokogiri-1.7.0.1/ext/nokogiri
C:/Ruby24-x64/bin/ruby.exe -r ./siteconf20170309-19200-t9wqwc.rb extconf.rb --use-system-libraries --with-xml2-include=c:/msys64/mingw64/include/libxml2 --with-xslt-dir=c:/msys64/m
ingw64
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.
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=C:/Ruby24-x64/bin/$(RUBY_BASE_NAME)
--help
--clean
C:/Ruby24-x64/lib/ruby/2.4.0/mkmf.rb:457:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from C:/Ruby24-x64/lib/ruby/2.4.0/mkmf.rb:572:in `block in try_compile'
from C:/Ruby24-x64/lib/ruby/2.4.0/mkmf.rb:523:in `with_werror'
from C:/Ruby24-x64/lib/ruby/2.4.0/mkmf.rb:572:in `try_compile'
from extconf.rb:138:in `nokogiri_try_compile'
from extconf.rb:162:in `block in add_cflags'
from C:/Ruby24-x64/lib/ruby/2.4.0/mkmf.rb:630:in `with_cflags'
from extconf.rb:161:in `add_cflags'
from extconf.rb:406:in `<main>'
To see why this extension failed to compile, please check the mkmf.log which can be found here:
C:/Ruby24-x64/lib/ruby/gems/2.4.0/extensions/x64-mingw32/2.4.0/nokogiri-1.7.0.1/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in C:/Ruby24-x64/lib/ruby/gems/2.4.0/gems/nokogiri-1.7.0.1 for inspection.
Results logged to C:/Ruby24-x64/lib/ruby/gems/2.4.0/extensions/x64-mingw32/2.4.0/nokogiri-1.7.0.1/gem_make.out
いろんなサイト様をいったりきたりして、原因を探す...
が、正直なところ、原因はわかりませんでした。
(多分「You have to install development tools first.」とあるので必要な何かが入っていないんでしょう...)
ここで、参考にさせていただいていた下記記事を確認
RubyInstaller2でWindows環境にRuby 2.4 + Rails 5.0.2をインストールする
解決
MSYS2を入れた後に「msys2 and mingw development toolchain」やってなくね??
原因はこれでした
解決までの道のり
1. MSYS2/Rubyをアンインストールする。
どうせならと両方削除します。
両方とも、コントロールパネルよりアンインストールできるので、一度きれいにします。
2. MSYS2をインストール
MSYS2 Installerより、インストーラーをダウンロードし、対象のファイルをダウンロードし、実行します。
3. Ruby 2.4をインストール
落としておいたRuby2.4のInstallerを再度実行
4. MSYS2 and MINGW development toolchain の実行
Installerが終了した後にMSYS2のcmd.exeが現れるので今度は[3]を実施
([2.MSYS2をインストール]を実施しなければMSYS2のcmd.exeで1⇒3の順に実施すれば良いだけかも)
5. gemのインストール
再度下記を実施します
# sqlite3
> ridk exec pacman -S mingw-w64-x86_64-sqlite3
> gem install sqlite3 --platform ruby
# Nokogiri
> ridk exec pacman -S mingw-w64-x86_64-libxslt
> gem install nokogiri --platform ruby -- --use-system-libraries --with-xml2-include=c:/msys64/mingw64/include/libxml2 --with-xslt-dir=c:/msys64/mingw64
※nokogiriのインストール結果
C:\work>ridk exec pacman -S mingw-w64-x86_64-libxslt
resolving dependencies...
looking for conflicting packages...
Packages (5) mingw-w64-x86_64-libgcrypt-1.7.3-1 mingw-w64-x86_64-libgpg-error-1.24-1 mingw-w64-x86_64-libxml2-2.9.4-2 mingw-w64-x86_64-xz-5.2.2-1
mingw-w64-x86_64-libxslt-1.1.29-2
Total Download Size: 2.86 MiB
Total Installed Size: 19.93 MiB
:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
mingw-w64-x86_64-xz-5.2.2-1-any 290.5 KiB 955K/s 00:00 [###############################################################] 100%
mingw-w64-x86_64-libxml2-2.9.4-2-any 1420.2 KiB 860K/s 00:02 [###############################################################] 100%
mingw-w64-x86_64-libgpg-error-1.24-1-any 190.2 KiB 1243K/s 00:00 [###############################################################] 100%
mingw-w64-x86_64-libgcrypt-1.7.3-1-any 579.2 KiB 1265K/s 00:00 [###############################################################] 100%
mingw-w64-x86_64-libxslt-1.1.29-2-any 453.0 KiB 1490K/s 00:00 [###############################################################] 100%
(5/5) checking keys in keyring [###############################################################] 100%
(5/5) checking package integrity [###############################################################] 100%
(5/5) loading package files [###############################################################] 100%
(5/5) checking for file conflicts [###############################################################] 100%
(5/5) checking available disk space [###############################################################] 100%
:: Processing package changes...
(1/5) installing mingw-w64-x86_64-xz [###############################################################] 100%
(2/5) installing mingw-w64-x86_64-libxml2 [###############################################################] 100%
Compiling /mingw64/lib/python2.7/site-packages...
(3/5) installing mingw-w64-x86_64-libgpg-error [###############################################################] 100%
(4/5) installing mingw-w64-x86_64-libgcrypt [###############################################################] 100%
(5/5) installing mingw-w64-x86_64-libxslt [###############################################################] 100%
Compiling /mingw64/lib/python2.7/site-packages...
C:\work>gem install nokogiri --platform ruby -- --use-system-libraries --with-xml2-include=c:/msys64/mingw64/include/libxml2 --with-xslt-dir=c:/msys64/mingw64
Temporarily enhancing PATH for MSYS/MINGW...
Building native extensions with: '--use-system-libraries --with-xml2-include=c:/msys64/mingw64/include/libxml2 --with-xslt-dir=c:/msys64/mingw64'
This could take a while...
Successfully installed nokogiri-1.7.0.1
Parsing documentation for nokogiri-1.7.0.1
Installing ri documentation for nokogiri-1.7.0.1
Done installing documentation for nokogiri after 9 seconds
1 gem installed
無事に入りました
6. railsのインストール
gem install rails で一発で入りました
C:\work>gem install rails
Fetching: loofah-2.0.3.gem (100%)
Successfully installed loofah-2.0.3
Fetching: rails-html-sanitizer-1.0.3.gem (100%)
Successfully installed rails-html-sanitizer-1.0.3
Fetching: rails-dom-testing-2.0.2.gem (100%)
Successfully installed rails-dom-testing-2.0.2
Fetching: builder-3.2.3.gem (100%)
~(長いので略)~
Installing ri documentation for rails-5.0.2
Done installing documentation for loofah, rails-html-sanitizer, rails-dom-testing, builder, erubis, actionview, actionpack, activemodel, arel, activerecord, globalid, activejob, ma
il, actionmailer, nio4r, websocket-extensions, websocket-driver, actioncable, thor, method_source, railties, bundler, sprockets, sprockets-rails, rails after 65 seconds
25 gems installed
7. 最終確認
各バージョンをコマンドで確認します
C:\work>rails -v
Rails 5.0.2
C:\work>ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x64-mingw32]
C:\work>gem list
*** LOCAL GEMS ***
actioncable (5.0.2)
actionmailer (5.0.2)
actionpack (5.0.2)
actionview (5.0.2)
activejob (5.0.2)
activemodel (5.0.2)
activerecord (5.0.2)
activesupport (5.0.2)
arel (7.1.4)
bigdecimal (default: 1.3.0)
builder (3.2.3)
bundler (1.14.6)
concurrent-ruby (1.0.5)
did_you_mean (1.1.0)
domain_name (0.5.20170223)
erubis (2.7.0)
globalid (0.3.7)
http-cookie (1.0.3)
i18n (0.8.1)
io-console (default: 0.4.6)
json (default: 2.0.2)
loofah (2.0.3)
mail (2.6.4)
method_source (0.8.2)
mime-types (3.1)
mime-types-data (3.2016.0521)
mini_portile (0.5.3)
mini_portile2 (2.1.0)
minitest (5.10.1)
net-http-digest_auth (1.4.1)
net-http-persistent (2.9.4)
net-telnet (0.1.1)
nio4r (2.0.0)
nokogiri (1.7.0.1)
openssl (default: 2.0.2)
power_assert (0.4.1)
psych (default: 2.2.2)
rack (2.0.1)
rack-test (0.6.3)
rails (5.0.2)
rails-dom-testing (2.0.2)
rails-html-sanitizer (1.0.3)
railties (5.0.2)
rake (12.0.0)
rdoc (default: 5.0.0)
sprockets (3.7.1)
sprockets-rails (3.2.0)
sqlite3 (1.3.13 ruby x64-mingw32)
test-unit (3.2.3)
thor (0.19.4)
thread_safe (0.3.6)
tzinfo (1.2.2)
unf (0.1.4)
unf_ext (0.0.7.2 x64-mingw32)
websocket-driver (0.6.5)
websocket-extensions (0.1.2)
xmlrpc (0.2.1)
参考サイト様
RubyInstaller2でWindows環境にRuby 2.4 + Rails 5.0.2をインストールする
MSYS2 installer
MSYS2 based RubyInstaller for Windows
Releases - larskanis/rubyinstaller2
2017/03/21追記
@akaneko3 さんより、ご指摘をいただきました。(まま抜粋)
rails new するときに bundler が同時に走りますが、その際に使われる nokogiri は 1.6.6.4 が使われるようです。現段階では 1.7.0.1 ではなく 1.6.6.4 に決め打ちしてインストールしないと行けなさそうです。
gem install nokogiri -v 1.6.6.4 --platform ruby -- --use-system-libraries --with-xml2-include=c:/msys64/mingw64/include/libxml2 --with-xslt-dir=c:/msys64/mingw64
どうしてもnokogiri 1.7.0.1を入れたい場合はコメントに記載していただいている。方法もしくは、
コメントに張っていただいている下記記事を参考にすると入るらしいですが、あくまで推奨はされていない模様
Windows でも Ruby 2.4.0 が使えるんです。そう、RubyInstaller2 ならね。
@akaneko3 さん教えていただきありがとうございました。