古いCGIなどでPerlで日本語を扱うものがjcode.plを要求する。もう動かしてる意味もほとんどないけれど過去の情報が見えなくなるのも嫌なので動かし続けてるのだが、Stretchへのアップデート後にCGIが動いていなかった。これは例によってはは~ん、jcode.plが読めてないなと直感。
調べてみるとちゃんとjcode.plのパッケージであるlibjcode-perlパッケージはインストールされてるし、/usr/share/perl5/jcode.plも存在する。
じゃあ、Perlのパスに入っていないのかとおもって@INCを表示させてみる。
perl -E ‘say for @INC’
すると/usr/share/perl5もパスに通ってる。うぬぬ。
しょうがないので手動でjcode.plの上位互換ライブラリであるjacode.plをパスが通った場所に置くことにする。入手元はCPAN(http://search.cpan.org/dist/jacode/)でアーカイブをほどいてjacode.plを手に入れる。
あとは/usr/local/lib/site_perlにコピーする。このディレクトリはDebianの標準では掘られてないのでroot権限で掘る必要があった。
最後にjcode.plを要求するCGIでjcode.plでなくjacode.plを要求する様に変更する。
require ‘jcode.pl’ -> require ‘jacode.pl’
動作を確認するとちゃんと動くようになっていた。まあ、jcode.plもjacode.plも枯れたライブラリなのでアップデートすることもないだろうから、この対処で十分だろう。