[Mac] awk や tigがdyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib でエラーになる問題
OS mac
Published : 2020-11-18   Lastmod : 2020-11-18

原因

dlibという画像認識ライブラリーをアップロードした後、tigやawkを利用しようとすると、

dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib
  Referenced from: /usr/local/bin/awk
  Reason: image not found

というエラーでbashが終了する事態になりました。dlibインストールに、cmakeのアップグレードが入り、その際にmacのreadlineが7⇒8へアップグレードされてしまったのが原因のようです。tigやawkはreadline8へ対応が完了していないため、エラーになるようです。2020年11月現在、tigは問題なく、とりあえず、awkのみのようです。

この現象には過去何回も遭遇し、そのたびに汗をかきながら直してきたので、一度まとめておきます。 (Shellがバグると結構焦ります・・・)

以前利用した解決案

2019年の春ぐらいに同じ現象が出たときは、こちらのサイトにあるような方法で解決出来ました。

「パターン2: homebrew cleanupしてしまった」にあるように、

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

で直りました。今回のcmakeのアップグレードでは、readline7系がクリーンアップされて削除されていたので、パターン1は使えませんでした。

今回うまくいった解決案

今回も同じようにコマンドを実行させましたが、直らず試行錯誤したあげく、以下の方法で直りました。

ln -s /usr/local/opt/readline/lib/libreadline.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
ln -s /usr/local/opt/readline/lib/libhistory.dylib /usr/local/opt/readline/lib/libhistory.7.dylib

原因のパターンと解決案は検索すれば色々出てきますが、今回私はシンボリックリンクを張り直すだけで動くようになりました。これだけなのに午前4時まで作業していました・・・

以下がお世話になったサイトです。

他に参考になったサイト

最後に

私の環境では様々な自作スクリプトが補助に常駐で動いていくれていて、これまで何事もなく動いていたbash系のスクリプトがエラーで終了するとかなり焦ります。今後、午前四時まで作業する必要がないように備忘録として残しておきます。同じようなエラーに遭遇している方のお役にたてれば幸いです。

Related Articles