升级Mac OS从El Capitan到High Sierra后Elixir无法运行求助
Hey there, sorry to hear you're stuck with this BoringSSL issue post-upgrade—this is a common compatibility hiccup between older Erlang installations and High Sierra's updated system libraries. Let's walk through some proven fixes:
1. Recompile Erlang to Match High Sierra's SSL Libraries
The root cause here is usually that your existing Erlang build was compiled against El Capitan's older SSL components, which don't play nice with High Sierra's updated BoringSSL/OpenSSL setup.
If you're using Homebrew, do this:
- Uninstall your current Erlang:
brew uninstall erlang - Clean up leftover cache files:
brew cleanup - Reinstall Erlang, ensuring it links against the system's updated SSL libraries (modern Homebrew handles this automatically, but explicitly running the install helps):
brew install erlang
If you use a version manager like asdf (recommended for Erlang/Elixir version control), update and reinstall the latest compatible versions:
# Update the erlang plugin to get the latest build definitions asdf plugin-update erlang # Install the latest stable Erlang asdf install erlang latest # Set it as your global system version asdf global erlang latest # Repeat the process for Elixir to ensure full compatibility asdf plugin-update elixir asdf install elixir latest asdf global elixir latest
2. Manually Point Erlang to the Correct SSL Library Path
Sometimes Erlang can't locate High Sierra's SSL libraries on its own. You can force this with an environment variable:
- First, confirm your OpenSSL path (High Sierra typically uses
/usr/local/opt/openssl/libor/usr/lib):which openssl - Set the environment variable before running Elixir/Mix commands:
export ERL_SSL_PATH=/usr/local/opt/openssl/lib mix run - To make this permanent, add the export line to your
~/.bash_profileor~/.zshrcfile, depending on which shell you use.
3. Refresh Your Elixir Project Dependencies
Old project dependencies might have hardcoded links to El Capitan's SSL libraries. Reset them to ensure compatibility:
- Navigate to your project directory:
cd /path/to/your/elixir/project - Delete the build and dependencies folders to clear stale files:
rm -rf _build deps - Re-fetch and recompile dependencies from scratch:
mix deps.get mix compile
Why This Happens
High Sierra updated its system-level cryptography libraries (including components tied to BoringSSL) to address security issues. Erlang relies heavily on these libraries for SSL/TLS operations, so an Erlang build compiled for El Capitan will try to load outdated library versions that no longer exist or are incompatible on the newer OS.
内容的提问来源于stack exchange,提问作者Schuere

