Mac のruby のirb で日本語入力をできるようにする

Leopard に最初から入っているrubyirb は日本語を入力できない

日本語を入力しようとRET を押すと、日本語が消える。Rails 使っている人には、script/console で日本語ができないので、結構辛い。

解決策1. ruby 1.8.7 を入れる

今回僕はこの方法でやりました。まだ1.8.7 にしてなかったので一石二鳥。

  • 参考

Ruby Install Guide::MacOS X

$ sudo port install ruby +darwin_9 +mactk


日本語入力もおk

$ ruby -v
ruby 1.8.7 (2008-06-20 patchlevel 22) [i686-darwin9]
$ irb
irb(main):001:0> puts 'あ'

nil
irb(main):002:0>

解決策2. ソースからインストールする

ruby のバージョンを1.8.6 以前のものを使いたい場合等で、かつこの問題を解決するにはソースからruby を入れる必要があります。

  • 参考

Leopardのruby入れ直し - 篳篥日記

日本語が入力できない原因

ふと、Leopard付属のirbで日本語入れてみたら、確定と同時に消されちゃったもので。
これ、原因はreadlineだよね。
あーあ、せっかくLeopardrails最初から入ってて喜んでたのになぁ。この微妙な中途半端さ。
仕方ない。readlineからrubyも入れ直しますよ。


原因は、readline にあるらしい。なので、readline とruby 共々ソースから再インストールする必要があります。
ちなみに、解決策1 で問題が解決するのは、macports でインストールすると、readline も一緒に入れてくれるためです。

GNU readline をインストール

$ mkdir ~/src
$ cd ~/src
$ wget ftp://ftp.gnu.org/gnu/readline/readline-5.2.tar.gz
$ tar zxvf readline-5.2.tar.gz
$ cd readline-5.2


GNU readline は、普通にはコンパイルできない。support/shobj-conf ファイルを修正する必要があります。

support/shobj-conf の174行目、

darwin[78]*) SHOBJ_LDFLAGS=''

で、"[78]" を"[789]" に変更します。Leopardはdarwin9なので。

darwin[789]*) SHOBJ_LDFLAGS=''

とすると、コンパイルできます。


上記の修正後、コンパイルしてインストール。

$ ./configure --disable-static
$ make
$ make test
$ sudo make install
$ make clean


インストールした際に、「install: you may need to run ldconfig」ってでるけど、それらしきコマンドもスクリプトファイルもないから無視。

ruby をインストール

今回はruby 1.8.6 をインストールすることを想定。

  • 参考

Ruby Install Guide::MacOS X

$ cd ~/src
$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p230.tar.gz
$ tar xfvz ruby-1.8.6-p230.tar.gz
$ cd ruby-1.8.6-p230
$ ./configure --enable-shared --with-readline-dir=/usr/local
$ make
$ make test
$ sudo make install
$ make clean


Ruby Install Guide::MacOS Xには、インストールの際のオプションとして、「--enable-pthread」を指定していますが、これを指定すると「Segmentation Fault」するので、これは外しておきます。

また、ガイドにあるとおり、readline のパスを指定します。

irbの動作を改善するために、別途readlineをインストールした場合は、「--with-readline-dir=/usr/local」を追加してください

パスを通す

ruby は/usr/local に入るので、パスを通しておきます。ちなみに、オプションを変更すれば/usr/bin 下にruby を入れることができますが、デフォルトのruby を上書きするのは、元に戻すのが大変なので、よくないと思います。
このように、両方入れておいて、優先するパスを指定するのがいいと思います。

$ emacs ~/.bash_profile

export PATH=/usr/local/bin:$PATH を追加。


設定変更を適応。

$ source ~/.bash_profile


これで、irb で日本語が入力できるようになります。

gem を入れ直す

どちらの解決策をとっても、gem は入れ直す必要があります。僕の場合、gem はデフォルトのバージョンと合わせたかったので、ソースからインストールしました。

デフォルトのgem のバージョンの確認

$ /usr/bin/gem -v
1.0.1

ソースからgem をインストール

$ cd ~/src
$ wget http://rubyforge.org/frs/download.php/29548/rubygems-1.0.1.tgz
$ tar xvfz rubygems-1.0.1.tgz
$ cd rubygems-1.0.1
$ sudo ruby setup.rb


正しく入ったか確認。

$ gem list

*** LOCAL GEMS ***


正しくインストールされた。これから、rails とかをインストールして、元の環境と合わせます。面倒。。。

macports でgem をインストールしたい場合

$ sudo port install rb-rubygems


macports でインストールした場合、次のような問題が発生する可能性があります。

デフォルトのruby を使いたい場合

絶対パスで指定すればおk。

$ /usr/bin/ruby
$ /usr/bin/irb
$ /usr/bin/gem