結論:.bash_profileに書いてあった
export LIBRARY_PATH=”LIBRARY_PATH: usr/lib:/usr/local/lib”
が原因。。
export LIBRARY_PATH=$LIBRARY_PATH:”/usr/lib:/usr/local/lib”
もしくは
export LIBRARY_PATH=”/usr/lib:/usr/local/lib”:$LIBRARY_PATH
プロローグ
cocoapodsで新しいライブラリを追加しようとしたものの
LoadError: dlopen(/Users/hoge/.rbenv/versions/2.2.3/lib/ruby/2.2.0/x86_64-darwin17/openssl.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
Referenced from: /Users/hoge/.rbenv/versions/2.2.3/lib/ruby/2.2.0/x86_64-darwin17/openssl.bundle
Reason: image not found - /Users/hoge/.rbenv/versions/2.2.3/lib/ruby/2.2.0/x86_64-darwin17/openssl.bundle
という嫌な感じのエラーで更新できず。
とりあえず他の人のpodsを持ってきてしのいだものの、(気持ち的に)どこか引っかかる感じ。
その後Railsでrake db/migrateしても同様のエラーが。。(こちらの解決はエピローグに)
こちらは急ぎなのでなんとかしないと、、とあせり、とりあえずその時の環境をrubyの再インストールで思い
$ rbenv install 2.2.3
としたところ冒頭の
checking whether CFLAGS is valid... yes
checking whether LDFLAGS is valid... no
configure: error: something wrong with LDFLAGS="-L/Users/hoge/.rbenv/versions/2.2.3/lib "
somethingて何でしょう。。
somethingじゃ手も足も出ないのでこちらの記事からrbenv install途中の状態がわかるということで
rbenvでruby2.1.1がインストールできないので、ソースコードからmake installでコンパイルした
で -k のオプションでソースを残しておなじみのconfigure, make, make installができるということを知り試す。
configureのシェルスクリプトを見て
ac_fn_c_try_link()
で失敗すると
“something wrong with LDFLAGS=\”$LDFLAGS\”” “$LINENO” 5
となることを確認。
どうにかこのconfigureをデバッグできないかと思い調べてたらbashdbなる素敵なツールがあることを知り、homebrewからインストール(この辺から若干横道)。
ブレークポイントやらステップ実行やらを堪能したもののac_fn_c_try_linkでダメになっていることを再確認した程度。。
結局、失敗したときにconftest.errというファイルができるので、ファイルがあったら失敗として終わる、ということのようなので、そのconftest.errを自分のディレクトリにコピーするようにしてみる(そのままだとすぐ消える)。
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
(eval "$ac_link") 2>conftest.err
cp conftest.err /Users/hoge/Develop/Makefile/20191215/conftest.err.160305/conftest.err.$1
ac_status=$?
if test -s conftest.err; then
grep -v '^ *+' conftest.err >conftest.er1
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
cp conftest.err /Users/hoge/Develop/Makefile/20191215/conftest.err.160305/conftest.err.$1
が追加された部分です。
で、conftest.err.7875とかそんな感じの名前(最後の数字は呼び出し元の行数)の中身を見ると
ld: warning: directory not found for option '-LLIBRARY_PATH'
とのこと。最初のうちは警告なのでまあいいか、と思って先の「cp」を「mv」で移動して強制的(?)にconfigureを最後まで行かせたものの、うまくいく気がしないのでbashdbでいろいろこねくり回していました。
当然
$ echo $LIBRARY_PATH
LIBRARY_PATH:/usr/lib:/usr/local/lib
とやってみて/usr/libもあるし/usr/local/libもあることは確認済み。
。。。と何も悪くないのにと思って半日過ごしたが、.bash_profileを見てみると(冒頭の)
export LIBRARY_PATH="LIBRARY_PATH: usr/lib:/usr/local/lib"
書いたとおり「LIBRARY_PATH」の文字が出ていたようでした。。
代入するLIBRARY_PATHの先頭に$をつけて新しいシェルからrbenv installしたらうまく行きました。
なかなか(お間抜け具合が)レアなケースかと思うのでいくら検索した結果を試してもダメなわけでした。。
数日前のopenssl関連の何かが起きた!というバイアスでかなり遠回りしてしまったので、検索した結果を試してもダメなときは基本的なこと(自分の間抜けさ)を見直す、という事が肝要、と思いましたとさ。
プロローグ
恐らくrubyの再インストールでも良かったのかと思いますが、上記過程で何度もインストールされた古いopenssl(1.0.0系)を
9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
で無いよ!と言われているディレクトリに(Finderで)コピーしました。
一応1.0.2qとかsなのでHeartbleed対策できている版と思いたい。
下記2個のファイルを
/usr/local/Cellar/openssl/1.0.2s/lib/libcrypto.1.0.0.dylib
/usr/local/Cellar/openssl/1.0.2s/lib/libssl.1.0.0.dylib
以下にコピーしたところ何事もなかったように動きました。。
/usr/local/opt/openssl/lib/
(参照先は1.1.1dのディレクトリなので1.0.0と1.1が混在、、いいのかな。。)
コメントを残す