irbの日本語(再) 12月14日, 2016


Xcodeのバージョンがあがった。readline-7.0も出ていたし,久しぶりにlibeditをlibreadlineに入れ替えることにしよう。作業の時に参照している メモ が古くなり,不適切な箇所も気になっていたので,まとめ直すことにする。(El Capitan/10.11.6)

■まず、readlineを再compile。

$ curl -O http://www.ring.gr.jp/pub/GNU/readline/readline-7.0.tar.gz
$ tar xzvf readline-7.0.tar.gz; cd readline-7.0
$ ./configure; make; sudo make install

■ライブラリの指定を確認する

$ cd /System/Library/Frameworks/Ruby.framework/Versions/2.0\
    /usr/lib/ruby/2.0.0/universal-darwin15/
$ otool -L readline.bundle | grep libedit
    /usr/lib/libedit.3.dylib (compatibility version 2.0.0, current version 3.0.0)

このlibedit.3.dylibを/usr/local/lib/libreadline.dylibに入れ替えればよい。

■ライブラリの指定を入れ替える

$ sudo cp -p readline.bundle readline.bundle.BK
$ sudo install_name_tool -change \
    /usr/lib/libedit.3.dylib /usr/local/lib/libreadline.dylib \
    readline.bundle

■結果を確認する

$ otool -L readline.bundle | grep libreadline
    /usr/local/lib/libreadline.dylib (compatibility version 2.0.0, current version 3.0.0)
$ irb
irb(main):001:0> name="あ"
=> "あ"
irb(main):002:0> 

よし、OK//

【追記】irbのCatalinaへの対応 10月23日, 2019

irbが使えなくなった。「…Catalinaへの対応」というより「既存irbの放棄」だね。システムのRubyはWebby用に限定し, 遊びで使用するのは最新安定版(ruby-2.6.5)にすることにした。ソースをもらってきてコンパイル。ただし, このサイトを組み上げるのに使用しているWebbyは古いものなのでruby-1.8が必要。これまでOSのバージョンアップがあってもそのために古いrubyを温存してきている。ページの維持管理にはそちらを使用する。ちょっと面倒だけど, 自分でWebbyをupdateするよりは楽だろう。

readlineについてはreadline-8.0が"/usr/local"にいれてあるので, configureに指定することでirbの日本語の扱いには問題がなくなり, 上記のreadline.bundle関連のあれこれは不要になる。これで"alias irb=/usr/local/bin/irb"とでもしておけば普通にirbが使える。

ruby-2.6.5$ ./configure --with-readline-dir=/usr/local