Return 到 Homebrew 中的 readline 版本 6.x 来修复 Postgresql?
Return to readline version 6.x in Homebrew to fix Postgresql?
我不是 Homebrew 专家,但我认为 "upgraded" 我在 9/15/16 之后的某个时间从 readline 版本 6.x 升级到 7.0:
eat@eric-macbook:Homebrew$ brew info readline
readline: stable 7.0 (bottled) [keg-only]
Library for command-line editing
https://tiswww.case.edu/php/chet/readline/rltop.html
/usr/local/Cellar/readline/7.0 (45 files, 2M)
这让我的 9.4.5 Homebrew 版本的 Postgresql 很头疼(出于可比性原因,我需要较旧的 9.4):
eat@eric-macbook:~$ psql --version
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /usr/local/Cellar/postgresql/9.4.5/bin/psql
Reason: image not found
Trace/BPT trap: 5
不幸的是,我无法在 Homebrew 上找到要恢复到的 6.x 版本的 readline - 似乎只有 7.0 可用(?)。
我的问题是双重的:
- 我的 postgres/psql 问题的原因是 readline 版本不匹配吗?
- 如果是这样,我如何使用 Homebrew return 到 6.x 来纠正问题?
提前致谢!
只需重新安装 postgresql94
包,PostgreSQL 9.4 将使用新的 readline
包:
brew reinstall postgresql94
回答具体问题。
您可以在本地仍然存在的已安装 brew 包的版本之间切换,如这个问题中所述:
Homebrew install specific version of formula?
要降级到 readline 6.x,以下命令对我有用:
brew switch readline 6.3.8
注意:由于分支中的更改,此答案可能已过时(据安德鲁报告,提交消失)
对于仍然面临此问题但无法从自制程序包下载 readline 6.3.8 的用户。您可以尝试此解决方案。 (参考自here)
# Uninstall this incompatible version
brew uninstall readline
# Go to the local clone of homebrew-core
cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core
# Move to the homebrew-core revision that had 6.3.8
git checkout 35fed817726f61a9d40c8420582f6fde59eb5f14
# Re-install readline
brew reinstall readline
# Switch back to HEAD
git checkout master
# Pin readline so this can't happen again
brew pin readline
我能够用一条毯子克服这个问题 brew upgrade
(升级所有 brew 管理的包)。
对于来自 Rails 的人遇到此问题,您可以添加阅读行 gem 和 运行 bundle install
.
gem 'rb-readline' #Fixed readline error
如果你想使用 Sam Kah Chiin 的解决方案,你可以忽略 404。
应用额外的更改,以便它可以在新的 macOS 上运行:
diff --git a/Formula/readline.rb b/Formula/readline.rb
index 08d3728..d67e5e4 100644
--- a/Formula/readline.rb
+++ b/Formula/readline.rb
@@ -16,7 +16,7 @@ class Readline < Formula
sha256 "c129333634dd00ab2267ae9c531fca1f5cc50dd519ed3399918289fdfdf2663b" => :lion
end
- keg_only :shadowed_by_osx, <<-EOS.undent
+ keg_only :shadowed_by_macos, <<~EOS
OS X 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.
最后做sudo update_dyld_shared_cache
我不是 Homebrew 专家,但我认为 "upgraded" 我在 9/15/16 之后的某个时间从 readline 版本 6.x 升级到 7.0:
eat@eric-macbook:Homebrew$ brew info readline
readline: stable 7.0 (bottled) [keg-only]
Library for command-line editing
https://tiswww.case.edu/php/chet/readline/rltop.html
/usr/local/Cellar/readline/7.0 (45 files, 2M)
这让我的 9.4.5 Homebrew 版本的 Postgresql 很头疼(出于可比性原因,我需要较旧的 9.4):
eat@eric-macbook:~$ psql --version
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /usr/local/Cellar/postgresql/9.4.5/bin/psql
Reason: image not found
Trace/BPT trap: 5
不幸的是,我无法在 Homebrew 上找到要恢复到的 6.x 版本的 readline - 似乎只有 7.0 可用(?)。
我的问题是双重的:
- 我的 postgres/psql 问题的原因是 readline 版本不匹配吗?
- 如果是这样,我如何使用 Homebrew return 到 6.x 来纠正问题?
提前致谢!
只需重新安装 postgresql94
包,PostgreSQL 9.4 将使用新的 readline
包:
brew reinstall postgresql94
回答具体问题。
您可以在本地仍然存在的已安装 brew 包的版本之间切换,如这个问题中所述: Homebrew install specific version of formula?
要降级到 readline 6.x,以下命令对我有用:
brew switch readline 6.3.8
注意:由于分支中的更改,此答案可能已过时(据安德鲁报告,提交消失)
对于仍然面临此问题但无法从自制程序包下载 readline 6.3.8 的用户。您可以尝试此解决方案。 (参考自here)
# Uninstall this incompatible version
brew uninstall readline
# Go to the local clone of homebrew-core
cd $(brew --prefix)/Homebrew/Library/Taps/homebrew/homebrew-core
# Move to the homebrew-core revision that had 6.3.8
git checkout 35fed817726f61a9d40c8420582f6fde59eb5f14
# Re-install readline
brew reinstall readline
# Switch back to HEAD
git checkout master
# Pin readline so this can't happen again
brew pin readline
我能够用一条毯子克服这个问题 brew upgrade
(升级所有 brew 管理的包)。
对于来自 Rails 的人遇到此问题,您可以添加阅读行 gem 和 运行 bundle install
.
gem 'rb-readline' #Fixed readline error
如果你想使用 Sam Kah Chiin 的解决方案,你可以忽略 404。
应用额外的更改,以便它可以在新的 macOS 上运行:
diff --git a/Formula/readline.rb b/Formula/readline.rb
index 08d3728..d67e5e4 100644
--- a/Formula/readline.rb
+++ b/Formula/readline.rb
@@ -16,7 +16,7 @@ class Readline < Formula
sha256 "c129333634dd00ab2267ae9c531fca1f5cc50dd519ed3399918289fdfdf2663b" => :lion
end
- keg_only :shadowed_by_osx, <<-EOS.undent
+ keg_only :shadowed_by_macos, <<~EOS
OS X 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.
最后做sudo update_dyld_shared_cache