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 . 

参考

Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考
[ad] Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考
Tom Long, 秋勇紀 (単行本(ソフトカバー))