created: 2021-02-18T05:29:16.000Z

perl の XS.c: loadable library and perl binaries are mismatched

開発環境を docker-compose でやっていて、perlのバージョンをあげた時に発生。

XS.c: loadable library and perl binaries are mismatched (got handshake key 0xc180000, needed 0xe180000) exited with code 1

書いてある通り、perlのバージョンと入れているライブラリのバージョンが合わないので発生している。

依存ライブラリは carton で管理しているが、carton は perl 自体のバージョンには感知しないので carton install しても carton は「すでにご指定のライブラリは入ってますよ」と言い、perl は「入ってるライブラリ(のビルド成果物)はうちのバージョンと違いますよ」となっている

docker-compose で volume を共有しているディレクトリを消して、再度入れ直したら動くようになる。

$ rm -rf ./docker/app/local/*
$ docker build . 

参考

詳説 データベース ―ストレージエンジンと分散データシステムの仕組み
[ad] 詳説 データベース ―ストレージエンジンと分散データシステムの仕組み
Alex Petrov, 小林 隆浩 (単行本(ソフトカバー))