pavlog

ウェブエンジニアがあれやこれやを書きます

【開発】readlineがbrewによってupgradeされてしまった時の対処方 - 備忘録

brew install cj-bc/cj-bc/readline

あ、忘れてください。このコマンドは魔法のコマンドです。

brew upgradeなどを迂闊に叩いてしまって、環境が壊れてしまった皆さん。こんにちは。 readlineが8系に更新されて喜ばしいことではあるものの、迂闊にアップデートしてしまったが故に環境がぶっ壊れてしまいました。

本来なら、8系に更新するように環境を改善すべきですが、手元ではまだ8系に対応してなかったり、8系へ更新するよりも7系を使った方が問題が起こらないライブラリもいるものです。

会社と自宅のPCで両方このreadline問題を踏み抜き、ターミナルを叩きながら頭が沸騰したので、忘れない内に記事にしておこうと思いました。

何故かは知らないですが、8系にアップデートした瞬間に7系が消えるので元に戻すのも大変なんですよね。 homebrewが便利なのかわからなくなってきました。 いや便利なんですけど、便利すぎて内部実装がよくわからん感じですね。 ソース読めという話ですが…

目次

readlineを8系から7系へダウングレードする

そう、これです。7系を使い続けたい。 まあ awk とかいるんでね…、使い続けたいんですよ、こっちは。

お酒飲みつつこの記事書いているので、僕は心底辛い気持ちになってます。

readline 7系が残ってる人

brew info readline して7系がいる人は適当に brew switch してください。 switchコマンドがわからない?ヘルプ嫁。

残ってない人

❯ brew info readline
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/8.0.0 (48 files, 1.5MB)
  Poured from bottle on 2019-03-01 at 22:20:47
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/readline.rb
==> Caveats
readline is keg-only, which means it was not symlinked into /usr/local,
because macOS provides the BSD libedit library, which shadows libreadline.
In order to prevent conflicts when programs look for libreadline we are
defaulting this GNU Readline installation to keg-only.

For compilers to find readline you may need to set:
  export LDFLAGS="-L/usr/local/opt/readline/lib"
  export CPPFLAGS="-I/usr/local/opt/readline/include"

For pkg-config to find readline you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/readline/lib/pkgconfig"

==> Analytics
install: 417,448 (30 days), 1,146,052 (90 days), 3,645,745 (365 days)
install_on_request: 47,232 (30 days), 124,500 (90 days), 351,817 (365 days)
build_error: 0 (30 days)

7系とか知らんけど消えてた人、一緒に入れ直しましょう。やり方ね、調べます。俺が。 勝手にclean up しないで欲しいですね、意図しない動きをするな

❯ brew unlink readline
❯ brew install cj-bc/cj-bc/readline

# or

❯ brew install cj-bc/cj-bc/readline
❯ brew unlink readline
❯ brew link --force cj-bc/cj-bc/readline

とりあえず叩いて見てくれ、治る。 そして、とりあえず叩いて壊れても文句言わないでくれ、この記事を読んでる君はきっと、エンジニアかエンジニア志望だろ。

github.com

まとめ

環境が治ったのでゴリゴリコード書きます。