homebrewでreadline7


[2019/06/15追記]
現在はreadline8への対応が進んでおり、tigreadline8で動作するようになりました。
awkは依然対応されていないようです(そもそも更新される予定があるのか不安になってきた)
自分はgawk(GNU実装のawk)に移行しました


readlineとは

readlineは、行編集用のライブラリでbashやvimなど、様々なところで使われています。

現在homebrewで入るreadlineはv8.0.0

現在、homebrewを使うとインストールできるのはバージョン8.0.0です。
しかしながら、 まだversion7系統を使っているプログラムがいくつかあるのです。

例:
- awk
- tig

これらを使うためには、readlineは7系を使わないといけません

readlineの7系を使う

実はhomebrewではバージョン切り替えが可能なので、readlineの7系(最新だと7.0.5)を使うことができます。

パターン1: 昔のCellarが残っている

昔readlineがまだ7系だった頃にreadlineをインストールしていて、brew cleanupをしていなければ以下のようにしてバージョンを切り替えることができます。

# brew switch <formula名> <バージョン>
$ brew switch readline 7.0.5

brew info readlineをした時、以下のように使用可能なバージョンが表示されます(自分は後述の方法で7.0.5入れたので7.0.5が入っています)

readline: stable 8.0.0 (bottled) [keg-only]
Library for command-line editing
https://tiswww.case.edu/php/chet/readline/rltop.html
/usr/local/Cellar/readline/7.0.5 (46 files, 1.5MB) # <-- この行
  Built from source on 2019-02-02 at 18:34:08
/usr/local/Cellar/readline/8.0.0 (48 files, 1.5MB)
  Poured from bottle on 2019-01-13 at 23:06:35

パターン2: homebrew cleanupしてしまった

Homebrew cleanupをしてしまい、Cellarが残っていない場合はどうしようもありません...諦めまし
なんてわけはもちろんないです。
readlineのformulaを古いのを使えばいいんです。
ということで、古い(7.0.5用の)formulaを本体から抜き出してきてここに置いてあります:
Cj-bc/homebrew-cj-bc/readline.rb

普通にtapしても良いですが、自分は他のformulaも同じレポジトリに置いているので割と混同するので以下のように直接インストールするのをお勧めします(もちろん自分で取ってきても良いと思います。)

$ brew unlink readline # 8.0.0 のリンクを外しておく。必要かはわからないですが自分は外しました。
$ brew install cj-bc/cj-bc/readline

こうすることで、7.0.5が使えるようになります。

ちなみに私は: homebrewに勝手にcleanupされました