ChatGPT解决这个技术问题 Extra ChatGPT

dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib

I installed vapor via homebrew and then immediately wanted to jump into a project by executing vapor new Hello but then got the following message back in the terminal:

dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
Referenced from: /usr/local/bin/vapor
Reason: image not found
zsh: abort      vapor new Hello

I tried some approaches to fix this like uninstalling and reinstalling openssl via brew but that didn't work . Also tried something I found in the internet but nothing worked. I assume it has something to do with vapor only working with version 1.0.0 but not 1.1.1 and that's what I have. I guess I need to downgrade to 1.0.0 but how'd I do that? I'm on MacOS Catalina if that matters.

Support for OpenSSL 1.1 was added to Vapor: github.com/vapor/open-crypto/pull/75
This might be helpful for others: <stackoverflow.com/a/59224109/3776039>
I used this method to fix /usr/local/bin/wget (that was exposed by plenv install-cpanm)
Only this manual fix works for me: programmersought.com/article/30292378091
An answer to a similar question about Postgres and pg_dump may solve this issue too!

m
mmrobins

Update: As of December 2020 and beyond, brew switch does not work, so use the other answer by @angabriel:

brew install rbenv/tap/openssl@1.0
ln -sfn /usr/local/Cellar/openssl@1.0/1.0.2t /usr/local/opt/openssl

Original Answer: Switch to an older openssl package

brew switch openssl 1.0.2s

Or, depending on your exact system configuration, you may need to switch to a different version. Check the output of ls -al /usr/local/Cellar/openssl for the version number to switch to.

brew switch openssl 1.0.2q
# or
brew switch openssl 1.0.2r
# or 
brew switch openssl 1.0.2s
# or
brew switch openssl 1.0.2t
# etc...

This is the best solution and simplest. Yet Homebrew will remove packages that are deprecated. Not sure when will this solution stop working
This work for me with a little change the last letter "r" brew switch openssl 1.0.2r on MacOS Catalina
What should I do if I don't have any "older" versions installed on my Mac, but just 1.1.1g?
When running ls -al /usr/local/Cellar/openssl did anyone get ls: /usr/local/Cellar/openssl: No such file or directory?
"brew switch" is already disabled. So what then?
a
angabriel

December 2020 This thread has many answers, but none worked for me. The top answer also suggests a downgrade:

brew switch ... throws Calling brew switch is disabled!

this worked for me:

brew install rbenv/tap/openssl@1.0
ln -sfn /usr/local/Cellar/openssl@1.0/1.0.2t /usr/local/opt/openssl

found here: https://github.com/kelaberetiv/TagUI/issues/86
(I need to run old mongodb 3.4 on OSX 10.13.x)


Wow people should look for this, this on the only that helped me!!
brew install rbenv/tap/openssl@1.0 took forever! But finally a solution that worked for me using macOS Big Sur, thanks @angabriel!
This solution that worked for me using macOS Big Sur, thanks
Worked on macOS Mojave fyi, thank you for the workaround!
This worked for me on High Sierra with /usr/local/Cellar/mysql/5.7.20/bin/mysqld
N
Neeraj Jain

brew switch openssl 1.0.2s

worked for me on "macOS Mojave", "version 10.14.6".


Thanks my Tableau 2019.10.3 was not opening in Mac OS Mojave and this command helped solve that!
brew switch openssl 1.0.2p
brew uninstall --ignore-dependencies openssl brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/30fd2b68feb458656c2da2b91e577960b11c42f4/Formula/openssl.rb
m
musafar006

Try to use install_name_tool:

sudo install_name_tool -change /usr/local/opt/openssl/lib/libssl.1.0.0.dylib /usr/local/opt/openssl/lib/libssl.1.1.dylib $(which vapor)
sudo install_name_tool -change /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib /usr/local/opt/openssl/lib/libcrypto.1.1.dylib $(which vapor)

In my case it start working when I used install_name_tool. The order of the parameter is following: old value (incorrect), then new value (where you have your openssl) and the path to vapor (which can be easily get by $(which vapor).


brew update && brew upgrade will upgrade all packages, it causes HUGE problem
yeah please remove brew upgrade from the answer @michal-cichon
@Zheden Vapor is a web framework implemented in Swift. Please take a look at the original question in this thread. If you don't know what Vapor is then this thread probably doesn't answer your question. If you use Homebrew to manage your dependencies, try Smokie's answer.
Thanks @musafar006. I didn't notice I copied a wrong path in the second command.
Why @Cronay is this still the correct answer? can u changed to the most voted ?
J
J.Z

first, list the details of the installed openssl version(or other programs) by:

$ls -al /usr/local/Cellar/openssl*
/usr/local/Cellar/openssl:
total 0
drwxr-xr-x    3 mba  staff    96 Nov 30 17:18 .
drwxrwxr-x  170 mba  admin  5440 Apr  8 02:03 ..
drwxr-xr-x   13 mba  staff   416 Nov 21 03:13 1.0.2t

/usr/local/Cellar/openssl@1.1:
total 0
drwxr-xr-x    4 mba  staff   128 Apr  7 18:35 .
drwxrwxr-x  170 mba  admin  5440 Apr  8 02:03 ..
drwxr-xr-x   14 mba  staff   448 Oct  1  2019 1.1.1d
drwxr-xr-x   14 mba  staff   448 Apr  7 18:35 1.1.1f

as above output, there are only one "right" versions "openssl" in my mac. then, switch to it:

$brew switch openssl 1.0.2t                                 
Cleaning /usr/local/Cellar/openssl/1.0.2t
Opt link created for /usr/local/Cellar/openssl/1.0.2t

I spent a whole day installing, reinstalling rails versions, mysql2 gems with various flags and options. This worked like a charm! Thanks mate!
Thanks so much for this. What shows that 1.0.2t is the "right" version? I have a 1.0.2r and a 1.1.1d and 1.1.1f.
there are only one "right" versions - what does this mean? How do you tell?
K
Kiryl Plyashkevich

For MacOS 10.15 Catalina try to install the previous openssl:

brew update && brew upgrade
brew uninstall --ignore-dependencies openssl
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

Error: Calling Non-checksummed download of openssl formula file from an arbitrary URL is disabled! Use 'brew extract' or 'brew create' and 'brew tap-new' to create a formula file in a tap on GitHub instead. If reporting this issue please do so at (not Homebrew/brew or Homebrew/core): github.com/tebelorg/Tump/issues/new
To install that GitHub link, we need to downgrade brew. cd /usr/local/Homebrew/ change to version 2.3.0 git checkout 2.3.0 then install HOMEBREW_NO_AUTO_UPDATE=1 brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb github.com/kelaberetiv/TagUI/issues/635#issuecomment-699482920
d
douxsey
brew switch openssl 1.0.2q

MacOs Catalina Version 10.15 worked for me


I had to upgrade and update brew before this worked
Error: openssl not found in the Cellar
brew search openssl ==> Formulae curl-openssl ✔ glib-openssl openssl@1.1 homebrew/portable-ruby/portable-openssl only 1.1 is available now
i
iOSArchitect.com

I had the same problem. I solved it by running these 2 commands:

brew uninstall vapor
brew install vapor/tap/vapor

It worked.


I just upgraded the client tool, not vapor but wget in my case. Which then used a later version of openssl brew upgrade vapor
P
Princekin
brew switch openssl 1.0.2r

it work for me,macOS Mojave, Version 10.14.6


It works for me (macOS Catalina, ruby 2.4.1, rails 5.2.2, openssl 1.1.1f). Switched to 1.0.2s.
similar works for me on macos high sierra 10.13.6 python3.6
j
joseph NK
brew switch openssl 1.0.2t

catalina this is ok.


For me on Catalina this is working: brew switch openssl 1.0.2j
a
abbood

This is the only thing that worked for me (OSX Catalina 10.15.7)

1- Download the file:

wget https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

2 - Run brew with the file downloaded:

brew install openssl.rb

or brew tap cartr/qt4 && brew install cartr/qt4/openssl@1.0
this worked for me, nov 2020 using "get github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb"
Worked. Just manually downloaded the file.
just a fyi I tried the wget but got the following dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib Referenced from: /usr/local/bin/wget Reason: image not found Abort trap: 6
S
Sergiy Seletskyy

This worked for me on my mac

brew switch openssl 1.0.2n


brew switch openssl 1.0.2s worked for me on Catalina.
i
ipatch

i'll throw in my 2 cents because i didn't see an answer that resolved my issue.

my particular use case, relates to starting a legacy rails application using ruby 2.6.3 with postgres 10.x series.

i'm running macOS 10.13.x high sierra

i update brew almost on a daily basis, and the version of openssl i have is 1.1

haven't started the rails app in several months, needed to perform some maintenance on the app today and, got some lovely ❤ error messages below,

9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)
  Referenced from: /usr/local/opt/postgresql/lib/libpq.5.dylib

echo "and"

9): Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib (LoadError)
  Referenced from: /usr/local/opt/postgresql/lib/libpq.5.dylib
  Reason: image not found -

the quickest way to work around my particular issue was to create a smylink from the current,

libssl.1.1.dylib
libcrypto.1.1.dylib

create 2 symlinks

cd /usr/local/opt/openssl/lib/
ln -sf libcrypto.1.1.dylib libcrypto.1.0.0.dylib
ln -sf libssl.1.1.dylib libssl.1.0.0.dylib

paths and version numbers are obviously going to change over time so pay attention to the path and version numbers while creating the above symlinks. after the symlinks were created, i am able to start my rails app.

cheers

leaving this here for future me 👴🏼


If this works for you, you should consider yourself lucky. The API between 1.0 and 1.1 was pretty different and most things that depend on 1.1 will not work with 1.0.
no such file or directory: /usr/local/opt/openssl/lib/
I think this is the correct solution. I did this a couple of times and it worked. I just forgot about it and end up here. So, just confirming this is a good solution that is future proof. Just make sure you create the exact erring lib version (1.0.0, 1.0.1, or 1.0.2), depending on the error you are getting.
C
Chitransh Gaurav
brew reinstall openssl

It automatically updates mysql server compatible with openssl. I tried many things, but only this worked for me.


This fixed it for me. Thanks.
For all the other solutions, brew seemed to need git (which is what was not working for me). This is the only solution I found that downloads files and installs them without git.
B
B.K

I had a similar issue and running the command below fixed the error for me:

brew update && brew upgrade

Simplest solution, openssl was in a correct and up to date version, but the stuff that crashed needed to be updated.
Fixed it for me.
saved my bacon!
4
4b0

I had to downgrade OpenSSL in this way:

brew uninstall --ignore-dependencies openssl
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/30fd2b68feb458656c2da2b91e577960b11c42f4/Formula/openssl.rb

It was the only solution that worked for me.


Calling Installation of openssl from a GitHub commit URL is disabled! Use 'brew extract openssl' to stable tap on GitHub instead.
J
James Hiew

If anyone is coming for openssl@1.1 issue in MacOS Big Sur,(i.e. Library not loaded: /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib, here's what solved it for me-

brew install openssl@1.1
ln -s $(brew --prefix)/opt/openssl/lib/libssl.1.1.dylib /usr/local/lib/
ln -s $(brew --prefix)/opt/openssl/lib/libcrypto.1.1.dylib /usr/local/lib

To inform newcomers here, this doesn't work on M1 with a arm64 build of brew
Works for me in MacOS Catalina 10.5.5
s
speedygonzales

A simple brew update && brew upgrade did the trick for me


A
Andreu Boixadera Ayala

Proposing brew update && brew upgrade as the solution is not a good answer and, as this error appears in most of the cases due the execution of this...

Switch to the previous version you were using with only: brew switch openssl XXX and that's it.


Guys from Google, the actual answer is here.
A
Afolabi Olaoluwa Akinwumi

Mehn this is me in July 7, 2020, after facing this error for 4 hours. This is the only command that worked for me:

brew update && brew upgrade


This worked for me on August 4th, 2020. As a note, the original, accepted answer had worked for me on July 16th, 2019 but did not work today.
This worked for me in October 2020. My project uses Symfony 5
L
Leadoux

Had this issue when trying to use LastPass CLI via Alfred on my Catalina install.

brew update && brew upgrade fixed the issue.

This is a much better optin than downgrading openssl.


This worked for me in October 2020. My project uses Symfony 5
t
tkacperek

This worked for me:

brew uninstall openssl
brew tap-new $USER/old-openssl
brew extract --version=1.0.2t openssl $USER/old-openssl
brew install openssl@1.0.2t

Source: https://github.com/kelaberetiv/TagUI/issues/635#issuecomment-560138773


That was the only solution that did the trick for me. Additionally, I had to create a link so that Vapor would find it: ln -s /usr/local/Cellar/openssl@1.0.2t/1.0.2t /usr/local/opt/openssl
No available formula or cask with the name "openssl@1.0.2t"
As Andreas stated, you still have to symlink. But Andreas command is backwards. It should actually read ln -s /usr/local/opt/openssl /usr/local/Cellar/openssl@1.0.2t/1.0.2t
This worked for me, but you have to do --ignore-dependencies.
@LucasC.Feijo can you give the full command with --ignore-dependencies?
N
NinjaDev

If you are using ruby-2.7.0 on MacOS Catalina 10.15

$ brew reinstall openssl@1.1

or

$ rvm reinstall 2.7.0
$ brew tap --repair
$ brew doctor

this hint saved me hours and hours, great advice for Mac users!
B
Balaji.J.B

This might be a problem because of having the older version of brew and installed byobu which require new dependency in order to solve this problem run the following command

brew update && brew upgrade
brew uninstall openssl; brew uninstall openssl; brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

a
avivamg

Explanation an solution: It seems that you're required to install older openssl version that is no longer exist on current brew repository ( 1.0.2t version ) . In order to solve it you should create a tap and extract an older version ( looking through repository history), after new installation create a link to this version and you're linked to the right version.

brew uninstall --ignore-dependencies openssl
brew tap-new $USER/old-openssl
brew extract --version=1.0.2t openssl $USER/old-openssl
brew install openssl@1.0.2t
ln -s /usr/local/Cellar/openssl@1.0.2t/1.0.2t /usr/local/opt/openssl

Documentation :

Taps (Third-Party Repositories) brew tap adds more repositories to the list of formulae that brew tracks, updates, and installs from. By default, tap assumes that the repositories come from GitHub, but the command isn’t limited to any one location.

 tap-new [options] user/repo
      Generate the template files for a new tap.
      
 --no-git: Don’t initialize a git repository for the tap.
 --pull-label: Label name for pull requests ready to be pulled (default pr-pull).
 --branch: Initialize git repository with the specified branch name (default main).

extract [options] formula tap Look through repository history to find the most recent version of formula and create a copy in tap/Formula/formula@version.rb. If the tap is not installed yet, attempt to install/clone the tap before continuing. To extract a formula from a tap that is not homebrew/core use its fully-qualified form of user/repo/formula.

extract [options] package user/repo
--version: Extract the specified version of formula instead of the most recent.
-f, --force: Overwrite the destination formula if it already exists.

S
ShellZero

The above answers didn't work for me. I am on Big Sur 11.6 with Xcode 12.5.1 and the brew keeps giving me an error saying my command line tools are outdated. First step is to update Xcode to 13.0. Restart the machine, and then run the

brew install openssl@1.1

Restart the terminal and now re-run the command which was giving the following error:

dyld: Library not loaded: /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib

Everything should work fine now, and you will not see the error message anymore.


G
Greg

I had a similar issue and based on this and other comments here's what happened and worked:

➜ brew update && brew upgrade && brew install openssl
remote: Repository not found.
fatal: repository 'https://github.com/Homebrew/homebrew-dupes/' not found
Error: homebrew/homebrew-dupes does not exist! Run `brew untap homebrew/homebrew-dupes` to remove it.
...
➜ brew untap homebrew/homebrew-dupes
➜ brew update && brew upgrade && brew install openssl

This was after working on it for hours, but first time I saw the homebrew-dupes. Not sure how Homebrew knew what to install, but it seemed to install everything from scratch. macOS Catalina, zsh. I think the initial problem came because of Catalina

The error I was getting was:

dlopen(/Users/gscar/.gem/ruby/2.7.0/gems/pg-1.2.2/lib/pg_ext.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib (LoadError)
  Referenced from: /usr/local/opt/postgresql/lib/libpq.5.dylib
  Reason: image not found - /Users/gscar/.gem/ruby/2.7.0/gems/pg-1.2.2/lib/pg_ext.bundle

H
Hussam Kurd

If you don't have Homebrew or don't know what is it

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update && brew upgrade
brew uninstall openssl; brew uninstall openssl; brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

Or if you already have Homebrew installed

brew update && brew upgrade
brew uninstall openssl; brew uninstall openssl; brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

This works for me on Mac 10.15


very good this worked for me.. when all the rest failed..lol thanks
V
Vikramaditya

Above solution didn't work for me.

First run brew doctor. if you see something like

Error: unknown or unsupported macOS version: :mountain_lion

then there are some outdated packages which needs to be removed, mine was
mongodb.

It could be python@2, node@6 or some other package.

uninstall those packages brew uninstall [name] then run brew doctor to verify if everything is ok. Then you can reinstall those packages again after brew update && brew upgrade.


J
Jerry

My recommendation is to never lower your openssl lib version for the sake of getting your build to work. Better to download the source code of the required lib and build it against the openssl version you have on your localhost.

I came across this posting while going through the same issue but was not comfortable lowering the openssl version come what may. Finally took the source code and build the app and it worked. I dont know why devs have their old versions of openssl on their boxes and which they build the dist packages and publish against those old version.


I agree with your concerns @Jerry and I hit upon what I think may have been a quicker solution than yours using MichalCichon's answer as a starting point. Good idea to rebuild from sources rather than downgrade your openssl lib version, but I'm guessing you know already that can be an extremely time-consuming process. Thanks for posting your answer.

关注公众号,不定期副业成功案例分享
Follow WeChat

Success story sharing

Want to stay one step ahead of the latest teleworks?

Subscribe Now