关键问题是你的postgresql试图找到libreadline.6.2.dylib,但你的readline是版本7.0,所以只链接了7的lib。
我不认为升级 postgresql 是一个好主意,它并不容易并且可能会导致很多问题,尤其是当您已经有数据库数据时。
我做的是切换readline的版本。当你查看brew info readline,你会发现不同的版本,我的是6.3.8,所以我通过执行切换到那个版本:
$ brew switch readline 6.3.8
会改成 6.3.8 并创建链接:
Cleaning /usr/local/Cellar/readline/6.3.8
Cleaning /usr/local/Cellar/readline/7.0.1
Opt link created for /usr/local/Cellar/readline/6.3.8
在这种情况下,所有链接的库都变成了 6 版本,并且命令行可以工作:
$ ls /usr/local/opt/readline/lib/
libhistory.6.2.dylib libhistory.dylib libreadline.a
libhistory.6.3.dylib libreadline.6.2.dylib libreadline.dylib
libhistory.6.dylib libreadline.6.3.dylib
libhistory.a libreadline.6.dylib
但是,如果你有不同的应用程序使用不同版本的 readline,我认为你应该考虑升级。
更新:2019 年 6 月 2 日
如果没有安装旧版本怎么办?
Homebrew 不提供安装旧版本公式的方法。从 v2.0.0 开始,它将每 30 天运行一次 brew cleanup 作为默认行为。因此,您可能会不小心更新brew并删除旧版本。
以下是安装旧版本的步骤:
- 进入
homebrew-core目录:
$ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
- 检查旧公式的哈希:
$ git log master -- Formula/readline.rb
- 找到对应版本的哈希值
commit 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date: Wed Aug 15 21:51:16 2018 +0000
readline: update 7.0.5 bottle.
- 结帐到旧公式:
$ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
- 重新安装公式:
$ brew reinstall readline
- 重置回购
按照这些步骤,您可以重新安装旧版本的公式。