AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

libcjose.so.0: cannot open shared object file: No such file or directory

AmazonLinux2023 でゆえあって mod_auth_openidc を make したんだけど、 httpd の LoadModule でエラーになる、と相談されていた。

TLDR

make した際に libcjose.so.0 が ldconfig で認識されているパス以下にコピーされていなかったので、make したディレクトリから cp して解決した。

cp /home/ec2-user/cjose-0.4.1/src/.libs/libcjose.so.0 /usr/lib64/

ライブラリのパス

以下のようにして確認する方法と、 LD_LIBRARY_PATH に追加して認識させる、という概ね2つの方法がある。

www.wakuwakubank.com

とはいえ基本的にシステムが期待するのは /usr/lib /usr/lib64 以下のいずれか対応する bit 数によってパスが変わる、くらいなので、困ったらこのディレクトリ以下へ cp で放り投げてしまうのが早い。 放り込んだ後はエラー吐いた対象を ldd で再度確認して、依存先のライブラリに not found がついていないか程度確認するとよいだろう。

ダメそうなら雑に ldconfig を実行しておくといいかもしれない。

stackoverflow.com

StackOverflow でも言及されている。

make の良し悪し

RPM などは依存するパッケージが固定されているので、環境に応じてある程度諦めを出しつつフィットさせるには make 使う必要があるのは仕方ない、という感じだが、一周回って最近はこの手の技術が必要だなあ、と感じつつある。

特にコンテナ環境などで極限まで容量を減らしたい、などの場合はビルドの複雑さを引き換えに手に入れることが可能なので。

スジが良いか否かはまた別の話だけど、いわゆる一つの GentooInstallBattle みたいなもんだと思っている。