库未加载:/usr/local/opt/readline/lib/lireadline.7. dylib

当我尝试运行 rails console时,我得到这个错误:

/Users/TuzsNewMacBook/.rvm/gems/ruby-2.3.7/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require':
dlopen(/Users/TuzsNewMacBook/.rvm/rubies/ruby-2.3.7/lib/ruby/2.3.0/x86_64-darwin18/readline.bundle, 9):
Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)

快速的搜索让我找到了 这篇文章,我尝试了以下几种方法:

brew reinstall postgresql(这确实是该项目的数据库)

还有

cd /usr/local/opt/readline/lib
ln libreadline.8.0.dylib libreadline.6.2.dylib

(我的 readline 版本是8)

brew link readline --force

但这些都无法修复它。

我最近添加了 pry-coollineguardguard-livereload宝石到我的项目,如果这有什么不同(轨道控制台加载之前这些罚款)。我在查最新的 Macos。

(更新)我正在使用 pry Rails 作为我的 Rails 控制台,如果这有什么不同的话。

有人帮忙吗? 谢谢。

46622 次浏览

在搜索 /usr/local/opt/readline/lib/libreadline.7.dylib时似乎抛出了错误。

你有没有试过把这个联系起来?

比如:

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

刚刚在 macOS Mojave,ruby 2.5.3 p105和 Rails5.2.2上尝试过,成功了。

Most often in Ruby-applications, this is caused by gems that have extensions (the gems saying "Building native extensions.."), that are built using a specific version of, in this case, readline.

基本上,有两种解决方案:

或者,您可以将 gem 的第8版符号链接到缺少的版本。这在许多情况下可以工作,但是如果向后兼容性被破坏,它就不会工作。

或者,如果 gem 实际上支持版本8,您可以重新安装该特定的 gem,或者通过运行 gem pristine --all“原始”它。

编辑 : 在“我已经尝试过”的范围内,重新安装 PostgreSQL 也是使用特定版本构建的二进制文件之一,可能还需要重新构建,以使用系统库,如 readline。

重新安装我的 Ruby 版本似乎已经解决了这个问题:

rvm reinstall 2.3.7

所以我检查了一些答案在这里,但我不认为他们可以与香草莫哈韦 Mac 安装。我用的是10.14.4,而我做的是这些:

  • get homebrew from https://brew.sh

  • $ brew install coreutils: 这为 mac 安装了 gnu coreutils pkg,我们希望从这里得到 greadlink,因为 macOSX 的 readlink 与 gnu readlink 不同。这是非常令人困惑的,但这就是在麦克兰的生活。

  • 我发现 mac 的 readlink 有点缺乏,所以我通过别名 greadlink 覆盖了现有的 readlink。(你可以通过 $ alias readlink=greadlink >> /etc/bashrc让所有用户都可以使用它,这将使每个用户都能够使用它。

  • 我链接了已经链接的 .8.文件,而不是’.8.0’因为如果它被更新到 .8.1.,那么我的 readlink 不会中断或错过库的特性。我非常肯定我们会格式化我们的 Mac 之前9 + 出来。

是的,最好的答案是重新安装。

You can get the version easily by typing:

ruby -v

对于 rbenv,命令是:

rbenv install 2.3.7

rvm合作:

rvm reinstall 2.3.7

我建议不要手动对本地库进行符号链接。从 OS X 10.4开始,标准的 include 库路径 /usr/include不再使用,并且被 SIP 锁定(这使得很难移动到)。

苹果提供了一个“遗留安装程序”,您可以安装在“旧位置”的头,这也将解决您的路径,以正确地找到头安装通过 brew

cp /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg ~/Desktop && open ~/Desktop/macOS_SDK_headers_for_macOS_10.14.pkg`

点击这里查看详细的报道。

你能试试吗

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

you are on the right track but it seems like rails is looking for libreadline.7.dylib and libreadline.7.dylib is not there in the folder.

当我运行 lftp的时候,我的问题也是一样的。

仅仅运行 brew upgrade就已经解决了我的问题,因为它已经更新了(其中包括) :

readline 8.0.0_1 -> 8.0.1
lftp 4.8.4 -> 4.8.4_2

Got this issue:

dyld: Library not loaded: /usr/local/opt/mpfr/lib/libmpfr.4.dylib

做..。

cd /usr/local/opt/mpfr/lib/
ln -s libmpfr.dylib libmpfr.4.dylib

在 MacOS Catalina 上帮了我大忙

一个非常简单的解决方案,不涉及重建您的 RVM 配置或系统链接库。

添加到你的 Gemfile:

gem 'rb-readline'

如果你正在做捆绑组

group :development do
gem 'rb-readline'
end

那就快跑

> bundle

如果不行就告诉我。

背景: 当我试图安装 tig 时发生了这种情况,但是我认为这是一个常见的问题,您可能需要手动将已安装的软件链接到其他软件想要的正确路径。

如果找不到 Mac 上安装的 readline,则应该运行

brew install readline

在你安装了截止日期后,brew 会要求你链接它。但是实际上你不能通过运行链接

brew link readline

即使你不能通过运行链接

sudo brew link readline

Mac OS 会警告你这是非常危险的,并阻止你这样做。

The Latest version of readline is version 8, so you will see the error message like

Library not loaded: /usr/local/opt/readline/lib/libreadline.8.dylib

啤酒厂设定的截止日期是

/usr/local/Cellar/readline/8.0.4

因此,您必须使用命令 ls 手动将其链接到您的软件所需的位置

ln -s /usr/local/Cellar/readline/8.0.4 /usr/local/opt/readline

好好享受吧!