Return to readline version 6.x in Homebrew to fix

2019-01-31 11:15发布

I'm no Homebrew expert but I think it has "upgraded" me from readline version 6.x to 7.0 sometime after 9/15/16:

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)

This has caused headaches for my 9.4.5 Homebrew version of Postgresql (I need the older 9.4 for comparability reasons):

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

Unfortunately I can't find a 6.x version of readline on Homebrew to revert to - only 7.0 seems to be available(?).

My question is twofold:

  • Is the the readline version mismatch the cause of my postgres/psql problem?
  • If so, how do I return to 6.x with Homebrew to correct the problem?

Thank you in advance!

6条回答
Root(大扎)
2楼-- · 2019-01-31 11:47

Just reinstall postgresql94 package, the PostgreSQL 9.4 will use the new readline package:

brew reinstall postgresql94
查看更多
Viruses.
3楼-- · 2019-01-31 11:49

For people coming from Rails with this issue you can just add the readline gem and run bundle install.

gem 'rb-readline' #Fixed readline error
查看更多
Melony?
4楼-- · 2019-01-31 12:01

I was able to overcome this with a blanket brew upgrade (upgrade all brew-managed packages).

查看更多
Luminary・发光体
5楼-- · 2019-01-31 12:02

To those who still facing this issue but cannot download the readline 6.3.8 from the homebrew package. You can try this solution. (Refer from 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
查看更多
戒情不戒烟
6楼-- · 2019-01-31 12:04

If you would use Sam Kah Chiin's solution, you can ignore the 404.

Apply the extra change so it would work on new 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.

Do sudo update_dyld_shared_cache at the end

查看更多
混吃等死
7楼-- · 2019-01-31 12:05

To answer the specific question.

You can switch between version of installed brew packages which are still around locally as explained in this question: Homebrew install specific version of formula?

To downgrade to readline 6.x the following command worked for me:

brew switch readline 6.3.8
查看更多
登录 后发表回答