readline&Rubyのインストールにはまった

一部修正・追記しました。


昨日、本読みながらRailsの勉強してたときに発生しました。

ruby script/console


してsqliteのデータベースをでっちあげようとした時に
日本語を入力して確定すると文字が消える。入力できない。
何を思ったのか


Rails側でなんかしないといけないんだろう」

とろくに調べもせず、-Ku とかオプションっぽくいろいろ付けてみても変化なし。
それでやっと調べてみたところ、どうやらreadlineとか言う奴が悪さしているらしい。



以下、UnixLinux)等のコマンド関系が全くわかっていないシロートでネット上の情報を頼りにカンでインストールしてみた時の記録。
それ故に無茶苦茶な事をしているかもしれません。自己責任でお願いいたします。

readlineをインストール

2007-11-17 - 篳篥日記
こちらで原因がreadlineだと判明。
しかし、ヘタレの僕にはあまりインストール方法がわからず、他を探してみる。


上記ブログにあったリンク先
Building the GNU Readline Library on Leopard - agwの日記
こちらはなにやらもっとハイレベルな雰囲気を感じ、怖じ気づいてしまいあまりじっくり見ないうちに他を探してみる。


つづいてこちら
Gnu readline のインストール
おおっ!ここならそっくりそのまま真似してみても大丈夫そうだ。
readlineのインストールはこちらのやり方を完コピしてみました。



以下を参考にreadlineにパッチをあてました。
開発環境としてのMac OS Xカスタマイズ - 古橋貞之の日記


こんな感じにreadlineはインストールしました。

wget http://ftp.gnu.org/pub/gnu/readline/readline-5.2.tar.gz
wget http://ftp.gnu.org/pub/gnu/readline/readline-5.2-patches/readline52-00{1,2,3,4,5,6,7}
tar zxvf readline-5.2.tar.gz
cd readline-5.2
for p in ../readline52-*; do patch -p2 < $p; done
./configure --enable-multibyte CFLAGS="-isystem /usr/local/include"
make
sudo make install

そのあと
Gnu readline のインストール
上記サイトの一番下の方に書いてあるようにシンボリックリンクを貼りました。

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

2007-11-17 - 篳篥日記
の情報ではRubyもインストールしなおさないといけないっぽいのでRubyも再インストール。


Tigerの時はmacportsRubyをインストールしてました。
でも、あれってインストール場所がデフォルトだとOSに元々入ってるRubyと違う場所なんですよねぇ。
何となく今回は今あるRubyを上書きしてやりたい衝動に駆られてしまいました。


デフォルトのRubyを上書きすることはあまりよくないようです。なるべく別の場所にインストールした方がいいようです。

こちらを参考にRubyをインストール。オフィシャルです。
Ruby Install Guide::MacOS X



patches/ruby_thread_hooks.diff は最低限Patchをあてた方がいいようです。
僕はここのRubyにPatchをあてました。
Source Browser


Patchのあてかたはここを参考にさせていただきました。
小粋空間: パッチをあてる(その1:適用方法)



./configure のオプションがなんとなく肝っぽいのでじっくり読んでみる。
僕流にアレンジしてみた結果は


パスを修正

./configure --prefix=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr --enable-shared --with-readline-dir=/usr/local


今まで見てきたサイト情報を総合する形でやってみました。
この ./configure のところ以降はオフィシャルサイトをそのまま完コピしました。


これで無事にirbで日本語が通るようになりました。

実は

結局、一カ所を除いては参考サイトをそのままやってみたわけですが、
ひねった箇所で実は一回失敗してます。


Rubyのインストール先の指定を勢い余って2つ深い階層にしてしまってあら大変。
安易にそれをFinderで上書きコピーなんかしてしまってもっと大変。

ドラえも〜ん

ここでLeopardの本領発揮。
Time Machineの登場ですよ。
該当箇所のみ戻してもいいかとも思ったのですが、いっそのこと
これまでの過程をまるまるやり直したかったのでシステム丸ごと時空を超えてみることに決定。


Macのヘルプで作業工程を確認して、いざ過去へ!
ハマり始めが3時くらいだった様に思っていて、
バックアップ可能なのが1時頃のシステムのデータしかなく少し古くかったので不安でした。
それでも、調べ物していたブラウザの履歴も残っていたし、railsのプロジェクトファイルも
ハマる前の状態に戻せたので満足です。


元々、消えると痛いようなものは
ブックマーク・・・・・はてブ
メール・・・・・・・・全てGmail経由
という風に外に置いているので多少消えることになってしまっても問題なし。


システム丸ごと復元は就寝前にしかけたので具体的な所要時間はわからないのですが、
寝る前の表示は2時間強くらいだったと思います。


教訓

1.Leopardユーザは今すぐ外付けHDDを買いに行こう。
2.本気で消えると困るもの、かつ、トラブルとは関係ないデータ(写真など)なら保険の意味を込めて別途ファイルをバックアップ。
3.WEBにデータを置く事にも当然リスクはありますけど、WEBアプリ(ソーシャルブックマークとかメールとか)を普段から活用していると楽。