From: ruby@...1.net Date: 2018-09-11T00:10:01+00:00 Subject: [ruby-dev:50637] [Ruby trunk Bug#13931] correct install_name of libruby on macOS (libruby.2.5.0.dylib -> libruby.2.5.dylib) Issue #13931 has been updated by tmm1 (Aman Gupta). Backport changed from 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN to 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: REQUIRED Requesting backport to 2.4 https://github.com/Homebrew/homebrew-core/pull/31967#issuecomment-420100406 ---------------------------------------- Bug #13931: correct install_name of libruby on macOS (libruby.2.5.0.dylib -> libruby.2.5.dylib) https://bugs.ruby-lang.org/issues/13931#change-73974 * Author: kimuraw (Wataru Kimura) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.0dev (2017-09-23 trunk 60002) [x86_64-darwin16] * Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: REQUIRED ---------------------------------------- ruby-dev:50256 で質問した件です。 ruby-2.4以降ではlibrubyのファイル名に実際のリリースバージョンのTEENYが反映されるようになったようですが macOS上でlibrubyのinstall name(linuxでのsoname相当)がTEENYを含んだもののため、 rubyを2.4.1から2.4.2など更新すると以前のバージョンで作成した拡張ライブラリでLoadErrorが発生します。 linuxなどではsonameをTEENYを含まないものにしているようですので、 macOSでも同様にするのがよいと思います。 ~~~ # ubuntu $ uname -sr Linux 3.16.0-4-amd64 $ objdump -p libruby.so.2.4.2 | grep SONAME SONAME libruby.so.2.4 # macOS $ uname -sr Darwin 16.7.0 $ otool -D libruby.2.4.2.dylib libruby.2.4.2.dylib: /Users/kimuraw/tmp_ruby/ruby24/lib/libruby.2.4.2.dylib # <= includes TEENY in "install name" ~~~ trunkと2.4で起きています。 2.3以前はlibrubyのファイル名のTEENYは常に"0"ですので問題ありません。 trunk r60002のconfigure.inへのパッチを添付します。 ---Files-------------------------------- configure.in.diff (672 Bytes) -- https://bugs.ruby-lang.org/