当我尝试运行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)
快速搜索使我进入this post,并且我尝试了一些事情:
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-coolline
,guard
和guard-livereload
宝石(如果有什么区别的话)(在这些之前,rails console可以很好地加载)。我正在使用最新的macOS。
(更新)我将撬轨用作滑轨控制台,如果有什么不同的话。
有帮助吗?谢谢。
答案 0 :(得分:108)
搜索/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.3p105和Rails 5.2.2上进行尝试即可。
答案 1 :(得分:24)
重新安装我的Ruby版本似乎已将其修复:
rvm reinstall 2.3.7
答案 2 :(得分:12)
您可以尝试
cd /usr/local/opt/readline/lib
ln -s libreadline.8.dylib libreadline.7.dylib
您处在正确的轨道上,但似乎Rails正在寻找libreadline.7.dylib和libreadline.7.dylib不在文件夹中。
答案 3 :(得分:4)
通常在Ruby应用程序中,这是由具有扩展名的宝石(宝石说“正在构建本机扩展..”)引起的,它们是使用特定版本的readline
构建的。
基本上,有两种解决方案:
您可以将gem的版本8符号链接到缺少的版本。这在许多情况下都可以使用,但是如果向后兼容性被破坏,则不会。
或者,如果该gem实际上支持版本8,则可以重新安装该特定gem,或者通过运行gem pristine --all
使其“原始”。
编辑:在“我尝试过的内容”中,重新安装PostgreSQL也是使用特定版本构建的二进制文件之一,可能还需要重新构建才能使用系统库,例如readline。
答案 4 :(得分:3)
是的,最好的答案是重新安装。
您可以通过键入以下内容轻松获得版本:
ruby -v
对于rbenv
,命令为:
rbenv install 2.3.7
与rvm
:
rvm reinstall 2.3.7
答案 5 :(得分:1)
解决了这个问题:
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帮了我大忙
答案 6 :(得分:0)
因此,我在这里检查了一些答案,但我认为它们不能与香草Mojave mac安装一起使用。我在执行这些操作时使用的是10.14.4:
$ brew install coreutils
:这将为Mac安装gnu coreutils pkg,我们需要greadlink
,因为macOSX的readlink与gnu readlink不同。它极为令人困惑,但在澳门的生活就是这样。
$ echo 'alias readlink=greadlink' >> ~/.bash_aliases
我发现macs readlink有点缺乏,因此我通过别名greadlink覆盖了现有的readlink。 (您可以通过$ alias readlink=greadlink >> /etc/bashrc
使所有用户都可以使用此功能,这将使每个用户都可以使用它。
$ ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
我链接了已经链接的.8.
文件,而不是“ .8.0”。文件,因为如果要更新到.8.1.
,则我的readlink不会中断或丢失库中的功能。我非常确定我们会在9+发行之前格式化Mac。
答案 7 :(得分:0)
我建议您不要手动符号链接本机库。在OS X 10.4的Aas中,标准的包含库路径/usr/include
不再使用,并且已被SIP锁定(这使得将内容移到其中很困难)。
Apple为您提供了一个“旧版安装程序”,以便您可以将标头安装在“旧位置”,这也将解析您的路径,以正确找到通过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`
答案 8 :(得分:0)
运行lftp
时,我的问题也一样。
运行brew upgrade
可以解决我的问题,因为它已经更新了(以及其他):
readline 8.0.0_1 -> 8.0.1
lftp 4.8.4 -> 4.8.4_2
答案 9 :(得分:0)
一个非常简单的解决方案,无需重建RVM gemset或符号链接库。
添加到您的Gemfile中:
gem 'rb-readline'
如果您要进行捆绑器分组
group :development do
gem 'rb-readline'
end
然后运行
> bundle
让我知道这是否无效。
答案 10 :(得分:0)
背景:这是我尝试安装tig时发生的,但是我认为这是一个常见问题,您可能需要手动将已安装的软件链接到另一个软件所需的正确路径。
如果找不到在Mac上安装的readline,则应运行
brew install readline
在安装截止日期后,brew将要求您链接它。但是实际上您无法通过运行来链接
brew link readline
即使您无法通过运行链接
sudo brew link readline
Mac OS会警告您这非常危险,并阻止您这样做。
readline的最新版本为版本8,因此您将看到类似的错误消息
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
享受!