kachick / times_kachick

`#times_kachick channel in chat` as a public repository. Personal Note and TODOs
https://github.com/kachick/times_kachick/issues?q=is%3Aissue+is%3Aclosed
6 stars 0 forks source link

2022-07-29 - Crystal 使ってて `error while loading shared libraries` とか `cannot open shared object file: No such file or directory` が出た時には `PKG_CONFIG_PATH` 環境変数で指定してやる #188

Closed kachick closed 2 years ago

kachick commented 2 years ago

https://github.com/kachick/times_kachick/issues/4#issuecomment-1166558836 の libpcre 不足問題は https://github.com/crystal-lang/crystal/issues/9285 => https://github.com/crystal-lang/distribution-scripts/pull/102 で用意された bundled 版のリリースパッケージを使えば回避できた。 (asdf-crystal を fork して対応させてたけど、--strip-components の値を増やさないと駄目だった。 tar 何もわからない・・・) とはいえ bundled版でも ameba 起動すると libssl が不足と出るのは変わらなかった。

❯ bin/ameba --version
bin/ameba: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

Ubuntu22.04だから、また https://github.com/kachick/times_kachick/issues/180 みたいに OpenSSL 1.1 と 3 のずれ問題なのかなーと思ったけど、その割には全くといっていいほど情報が出てこない。 そもそも依存性入れてても不足と出るのが???だったので調べてみたら、 $PKG_CONFIG_PATH という環境変数に依存しているらしい。現状なんも入ってなかったのだけど、追加したら動いた。ただ、1.1 系じゃなくむしろ 3 系で動く感じだった。多分 brew 使ってない綺麗な Ubuntu 環境ならこれも問題にならないのかな・・・

❯ PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(brew --prefix openssl@1.1)/lib/pkgconfig" crystal run bin/ameba.cr -- --version
/home/kachick/.cache/crystal/crystal-run-ameba.tmp: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

❯ PKG_CONFIG_PATH="$PKG_CONFIG_PATH:$(brew --prefix openssl@3)/lib/pkgconfig" crystal run bin/ameba.cr -- --version
1.0.0

brew で入れてた crystal だと流石にこの辺の PATH の扱いは綺麗にやってくれるのか問題なかったんだけど、asdf で管理したかったのでとりあえずホッとした。

と、改めて関連っぽい issue 探してたら1年前に自分が commit log に書いてたから当時 MacOSX 使ってたときに同じ問題にはまってたっぽい・・・ https://github.com/crystal-jp/introducing-crystal/commit/2232e9131e712bee9b007815e52dc47476820f73 やっぱすぐメモに残さないと忘れるな・・・ => https://github.com/crystal-lang/crystal/issues/6875#issuecomment-424959060

コンパイル後の ameba は欠けたままなようなので、環境変数を入れた状態で shards install し直す必要があった。