Bash on Ubuntu on Windows に Ruby インストール

以下のサイトを参考にしました。 addnote.hatenablog.com

qiita.com

Bash on ~(以下BoW)にRubyを入れたい。

sudo という特権コマンドを使う必要があるらしい。

パスワード忘れてる!!

BoWを入れ直します。

管理者権限でコマンドプロンプトを起動

やり方(Windows10)
デスクトップタスクバー左のWindowsマークを右クリック
 コマンドプロンプト(管理者)(A)をクリック

次のコマンドを実行します。

lxrun /uninstall /full
lxrun /install

Rubyを入れます


最初に、

ruby -v

こうしますと、これを入れてね~って出てくるのがRuby1.8、ちょっと古い。

そこで、リポジトリに追加。

sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt-get update

その後、以下のコマンドで見てみると、2.4が出てきます。

sudo aptitude search ruby

最新版Rubyを入れます。

sudo apt-get install ruby2.4 ruby2.4-dev

少々時間かかりますがOK!

無事に入りました。

$ ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux-gnu]

追記 nokogiriがインストールできない問題

きっと出来るんだろうけど私の力不足ゆえ。。

まず、

sudo gem update
gem list

*** LOCAL GEMS ***

bigdecimal (default: 1.3.0)
io-console (default: 0.4.6)
json (default: 2.0.2)
openssl (default: 2.0.3)
psych (default: 2.2.2)
rdoc (5.1.0, default: 5.0.0)

こんな感じ。 続いて、いろいろやってもなかなか。

sudo aptitude install ruby2.4-dev
sudo gem install nokogiri

だめ

sudo aptitude search zlib
sudo aptitude install zlib

sudo gem install nokogiri

だめ

sudo aptitude install  zlib1g
sudo aptitude install zlib1g-dev

sudo gem install nokogiri

だめ

sudo aptitude install libxml2
sudo aptitude install libxml2-dev
sudo gem install nokogiri

だめ

gem list

*** LOCAL GEMS ***

bigdecimal (default: 1.3.0)
io-console (default: 0.4.6)
json (default: 2.0.2)
mini_portile2 (2.1.0)
openssl (default: 2.0.3)
psych (default: 2.2.2)
rdoc (5.1.0, default: 5.0.0)

エラーを読むと、たぶんここ。

Running 'configure' for libxml2 2.9.4... OK
Running 'compile' for libxml2 2.9.4... *** 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.4
        --help
        --clean
        --use-system-libraries
        --enable-static
        --disable-static
        --with-zlib-dir
        --without-zlib-dir
        --with-zlib-include
        --without-zlib-include=${zlib-dir}/include
        --with-zlib-lib
        --without-zlib-lib=${zlib-dir}/lib
        --enable-cross-build
        --disable-cross-build

一応グーグル翻訳

libxml2のために 'configure'を実行する2.9.4 ... OK
libxml2のために 'compile'を実行する2.9.4 ... *** extconf.rbが失敗しました***
なんらかの理由でMakefileを作成できませんでした。
ライブラリおよび/またはヘッダを含む。詳細については、mkmf.logファイルを確認してください。してもいいです
設定オプションが必要です。

mkmf.logを見てねってことね。
メッセージにものってるけど、

find / -name mkmf.log

で探すと、こちら

/var/lib/gems/2.4.0/extensions/x86_64-linux/2.4.0/bigdecimal-1.3.2/mkmf.log
/var/lib/gems/2.4.0/extensions/x86_64-linux/2.4.0/nokogiri-1.7.2/mkmf.log
/var/lib/gems/2.4.0/extensions/x86_64-linux/2.4.0/psych-2.2.4/mkmf.log

で、どこ?

C:\Users\[Username]\AppData\Local\lxss

ここかな。これ、隠しなので直打ちで。
探す探す。
ここでした!
“C:\Users\ユーザー名\AppData\Local\lxss\rootfs\var\lib\gems\2.4.0\extensions\x86_64-linux\2.4.0\nokogiri-1.7.2\mkmf.log”

gcc -o conftest -I/usr/include/x86_64-linux-gnu/ruby-2.4.0 -I/usr/include/ruby-2.4.0/ruby/backward -I/usr/include/ruby-2.4.0 -I. -D_FORTIFY_SOURCE=2   -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC  conftest.c  -L. -L/usr/lib/x86_64-linux-gnu -L. -Wl,-Bsymbolic-functions -Wl,-z,relro -L/build/ruby2.4-L7jIoW/ruby2.4-2.4.1/debian/lib -fstack-protector -rdynamic -Wl,-export-dynamic     -lruby-2.4  -lpthread -lgmp -ldl -lcrypt -lm   -lc "
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main(int argc, char **argv)
4: {
5:   return 0;
6: }
/* end */

"gcc -I/usr/include/x86_64-linux-gnu/ruby-2.4.0 -I/usr/include/ruby-2.4.0/ruby/backward -I/usr/include/ruby-2.4.0 -I. -D_FORTIFY_SOURCE=2   -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC    -Werror -c conftest.c"
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main() {return 0;}
/* end */

have_library: checking for gzdopen() in -lz... -------------------- yes

"gcc -o conftest -I/usr/include/x86_64-linux-gnu/ruby-2.4.0 -I/usr/include/ruby-2.4.0/ruby/backward -I/usr/include/ruby-2.4.0 -I. -D_FORTIFY_SOURCE=2   -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC  -g -DXP_UNIX -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline conftest.c  -L. -L/usr/lib/x86_64-linux-gnu -L. -Wl,-Bsymbolic-functions -Wl,-z,relro -L/build/ruby2.4-L7jIoW/ruby2.4-2.4.1/debian/lib -fstack-protector -rdynamic -Wl,-export-dynamic     -lruby-2.4 -lz  -lpthread -lgmp -ldl -lcrypt -lm   -lc "
checked program was:
/* begin */
 1: #include "ruby.h"
 2: 
 3: #include <zlib.h>
 4: 
 5: /*top*/
 6: extern int t(void);
 7: int main(int argc, char **argv)
 8: {
 9:   if (argc > 1000000) {
10:     printf("%p", &t);
11:   }
12: 
13:   return 0;
14: }
15: int t(void) { void ((*volatile p)()); p = (void ((*)()))gzdopen; return !p; }
/* end */

--------------------

have_iconv?: checking for iconv... -------------------- yes

"gcc -o conftest -I/usr/include/x86_64-linux-gnu/ruby-2.4.0 -I/usr/include/ruby-2.4.0/ruby/backward -I/usr/include/ruby-2.4.0 -I. -D_FORTIFY_SOURCE=2   -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -fPIC  -g -DXP_UNIX -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline conftest.c  -L. -L/usr/lib/x86_64-linux-gnu -L. -Wl,-Bsymbolic-functions -Wl,-z,relro -L/build/ruby2.4-L7jIoW/ruby2.4-2.4.1/debian/lib -fstack-protector -rdynamic -Wl,-export-dynamic     -lruby-2.4  -lpthread -lgmp -ldl -lcrypt -lm   -lc "
checked program was:
/* begin */
 1: #include "ruby.h"
 2: 
 3: #include <stdlib.h>
 4: #include <iconv.h>
 5: 
 6: int main(void)
 7: {
 8:     iconv_t cd = iconv_open("", "");
 9:     iconv(cd, NULL, NULL, NULL, NULL);
10:     return EXIT_SUCCESS;
11: }
/* end */

--------------------

時間切れ…後日更新するかもです。

追記 2017/05/30

コメントにてアドバイスをいただき、
おかげさまで、無事にインストールできました。
ありがとうございました!わーい!