rake db:使用mysql2 gem迁移错误 - 未加载库:libssl.1.0.0.dylib

s89*_*89_ 9 ruby rake rubygems ruby-on-rails mysql2

运行rake db:migrate后出现以下错误

rake aborted!
LoadError: dlopen(/Users/scott/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.10/lib/mysql2/mysql2.bundle, 9): Library not loaded: libssl.1.0.0.dylib
  Referenced from: /Users/scott/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.10/lib/mysql2/mysql2.bundle
  Reason: image not found - /Users/scott/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.10/lib/mysql2/mysql2.bundle
/Users/scott/Google Drive/playground/myApp/myApp/config/application.rb:21:in `<top (required)>'
/Users/scott/Google Drive/playground/myApp/myApp/Rakefile:4:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)

libssl是指什么?

小智 19

首先卸载mysql2 gem:

gem uninstall mysql2
Run Code Online (Sandbox Code Playgroud)

确保你安装了openssl:

brew install openssl
Run Code Online (Sandbox Code Playgroud)

它会打印出一些笔记.我们对这部分感兴趣:

For compilers to find this software you may need to set:
LDFLAGS:  -L/usr/local/opt/openssl/lib
CPPFLAGS: -I/usr/local/opt/openssl/include
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样重新安装mysql2 gem:

gem install mysql2 -v 0.4.10 -- --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib
Run Code Online (Sandbox Code Playgroud)

你应该好好去.


Aru*_*Das 8

以下修复解决了问题

   ==> cd /usr/local/Cellar/openssl/1.0.2s/lib/

==> sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/local/lib
Run Code Online (Sandbox Code Playgroud)


s89*_*89_ 2

所以我自己的问题的答案如下——在 stackoverflow 上大约 5 个其他解决方案中,这是唯一有效的:

brew install openssl

cd /usr/local/Cellar/openssl/1.0.1f/lib

sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/lib/
Run Code Online (Sandbox Code Playgroud)

完整的解决方案在这里 - https://mithun.co/hacks/library-not-loaded-libcrypto-1-0-0-dylib-issue-in-mac/