[Rails] mysql2が `ld: library not found for -lzstd` で止まる場合の最終的解消方法

どこにもちゃんとした解決方法がなかったので記載する。

確認した環境

OS: MacOS Monterey(M1 mac, Intel Mac)
Ruby: 2.6.6
Rails: 2.5.2

エラー内容

$ bundle 

・・・・・・・・・

34 warnings generated. linking shared-object mysql2/mysql2.bundle ld: library not found for -lzstd clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [mysql2.bundle] Error 1 make failed, exit code 2 Gem files will remain installed in /Users/taichi/.anyenv/envs/rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/mysql2-0.5.3 for inspection. Results logged to /Users/taichi/.anyenv/envs/rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/extensions/x86_64-darwin-21/2.6.0/mysql2-0.5.3/gem_make.out An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue. Make sure that `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'` succeeds before bundling. In Gemfile: mysql2

解消方法

openssl@3とzstdをインストールする

$ brew install openssl@3 zstd

openssl@3のパスを通す

$ brew link --force openssl@3

LIBRARY_PATHにzstdを追加する

$ export LIBRARY_PATH=$LIBRARY_PATH:$(brew --prefix zstd)/lib

ld-flags に openssl@3/libを追加する

$ bundle config --local build.mysql2  "--with-ldflags=-L$(brew --prefix openssl@3)/lib"

bundle installを実行