FreeBSD を EoL となる 11.x から 12.x にアップグレードした後に各種アプリケーションなどを ports で再インストールしようとした際に以下のようなメッセージが出てビルドに perl モジュールを使用するものが全部ビルドできなくなった。
loadable library and perl binaries are mismatched (got handshake key 0xd480080, needed 0xe180080)
解決策はないものかと他での事例を参照すると、perl と perl モジュールの依存関係が再構築できないのでいったん全部削除してインストールしなおすしかないという書き方をしてるところがほとんどだった。
それが正しいのだろうけど、perl モジュールに依存してる ports にも影響があるのでなんとか回避できないものかとジタバタしてみたところ、「perl のバージョンを上げると handshake key の更新されるため、perl モジュールも handshake key の更新も併せて処理してくれる」という回避策を見つけた。
あまりお勧めできるやり方ではないだろうけど、あくまでも事例紹介ということで。
作業したときの環境
- FreeBSD 12 (11.x から upgrade した)
- perl5-5.30 → perl5-5.32