nanoを手探ってみる#1: ビルドする

大学で「大規模ソフトウェアを手探る」という課題があったので、そのときにnanoに手を加えたときの記録を書いていきます。OSはUbuntu14.04でペアを組んで二人で作業しました。目標はnanoのファイル読み込み機能にfuzzy finderをつけることです。

nanoとは

GNU nanoはワシントン大学開発のpicoというTUIテキストエディタのクローンとなるべく作られたテキストエディタです。動作が軽快な他、下によく使うショートカットキーの一覧が表示されるので、初めて使う人でも操作に戸惑うことがないです。vimemacsほどの拡張性・多機能性はありませんが、ちょっとしたスクリプトを編集する程度なら十分すぎるくらいです。多くのLinux(Ubuntu14.04含む)やOSXディストリビューションに規定のエディタとして入っているにも関わらず、vimemacsに役目を奪われてしまう悲しい宿命を背負ったエディタでもあります。

f:id:meloidae:20161106102225p:plain

まずはビルドから

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に続きます。