nanoを手探ってみる#1: ビルドする
大学で「大規模ソフトウェアを手探る」という課題があったので、そのときにnanoに手を加えたときの記録を書いていきます。OSはUbuntu14.04でペアを組んで二人で作業しました。目標はnanoのファイル読み込み機能にfuzzy finderをつけることです。
nanoとは
GNU nanoはワシントン大学開発のpicoというTUIテキストエディタのクローンとなるべく作られたテキストエディタです。動作が軽快な他、下によく使うショートカットキーの一覧が表示されるので、初めて使う人でも操作に戸惑うことがないです。vimやemacsほどの拡張性・多機能性はありませんが、ちょっとしたスクリプトを編集する程度なら十分すぎるくらいです。多くのLinux(Ubuntu14.04含む)やOSXのディストリビューションに規定のエディタとして入っているにも関わらず、vimやemacsに役目を奪われてしまう悲しい宿命を背負ったエディタでもあります。
まずはビルドから
http://git.savannah.gnu.org/cgit/nano.git/をgit cloneすればソースが手に入ります。cloneしたフォルダ内のREADME.GITの内容に従ってビルドすればいいようなので、とりあえず、Prerequisitesに書いてあるパッケージをインストールします。
sudo apt-get install autoconf automake gettext git groff pkg-config texinfo libglib2.0-dev
これらに加えてどうやらcursesというものも必要らしいのでそれもインストールします。
sudo apt-get install libncurses5-dev
README.GITに従い、nanoのディレクトリの中で
./autogen.sh CFLAGS="-O0 -g -DDEBUG" ./configure --prefix=$HOME/nano_install
とコマンドを打ちます。CFLAGSは左から最適化なし、gdbのデバッグ用、デバッグ用の出力をstderrに出すオプションです。autogenはうまくいったのですが、configureは途中でautopointがない、というエラーメッセージが出て失敗してしまいました。書いてあったの全部入れたのになんでやと思って調べると、autopointをインストールすればよいと当たり前のことが書いてある記事を見つけました。
sudo apt-get install autopoint
そのあと再度configureするとうまくいきました。あとは
make make install
とすると$HOME/nano_install内のbinフォルダにnanoとrnanoの実行ファイルが生成されるました。これでデバッガを使って中身を探りながらコードを書き換えることができます。
#2に続きます。