Ubuntu 20.04 で libmecab-perl 0.996-10build1 がロードできない

POPFile の日本語パーサーを KAKASI から MeCab に変更しようとして、 MeCab の Perl モジュールのロードができないことに気付いた。

インストールしているのは Ubuntu 20.04 の Universe リポジトリから apt でインストールした libmecab-perl 0.996-10build1 amd64 。

MeCab の Perl モジュールの状態を確認

$ perl -MMeCab -e ''
Can't load '/usr/lib/x86_64-linux-gnu/perl5/5.30/auto/MeCab/MeCab.so' for module MeCab: /usr/lib/x86_64-linux-gnu/perl5/5.30/auto/MeCab/MeCab.so: undefined symbol: _ZN5MeCab6Tagger6createEiPPc at /usr/lib/x86_64-linux-gnu/perl/5.30/DynaLoader.pm line 193.
 at /usr/lib/x86_64-linux-gnu/perl5/5.30/MeCab.pm line 11.
Compilation failed in require.
BEGIN failed--compilation aborted.

どうやら Ubuntu 20.04 の libmecab-perl には問題があるらしい

エラーメッセージをもとに検索したところ、 Debian のバグレポートに「#961253 – libmecab-perl: Can’t load Perl module – Debian Bug report logs」というものを発見。

Debian におけるこのバグは mecab / libmecab-perl 0.996-13 で修正されているが、 Ubuntu 20.04 の mecab / libmecab-perl は 0.996-10 系列である

libmecab-perl/focal,now 0.996-10build1 amd64 [installed]
mecab/focal,now 0.996-10build1 amd64 [installed]

が最新リリースのため、修正が反映されていないということなのだろう。

Ubuntu 21.04 の libmecab-perl では件のエラーは再現せず

Ubuntu 21.04 でインストール可能な mecab / libmecab-perl のバージョンを確認すると、

libmecab-perl/hirsute 0.996-14build3 amd64
mecab/hirsute 0.996-14build3 amd64

と 0.996-14 系列となっていたことから、両者をインストール後に試したところ、

$ perl -MMeCab -e ''
$ 

と、件のエラーが再現しないことが確認できた。

さて、どうしたものか……としばらく考えたが、よくよく考えてみれば、 Ubuntu 20.04 環境でなければならない理由は何一つなかったため、サクッと Ubuntu 21.04 環境に必要な環境を構築し直し、問題解決ということにした。

タイトルとURLをコピーしました