もう 8年前に作った Perl で書いたシステムを CentOS 9 サーバに移行する。
DBD/DBI を始め、色々と Perl モジュールをインストールしないといけないのだが、まあ、ほとんど yum で入れられるので大した手間ではない。
んが、日本語のコード変換に使用している、
Jcode;
MIME::Words
にはいつも苦労させられる。標準の yum リポジトリに含まれていないからだ。
(Jcode なんか、中で Encode 呼んでるだけなんだから入れなくてもいいやろみたいな素人意見は却下。use Jcode している全ソースを修正する暇も金もない。けっこう巨大なシステムなのである。個人が趣味で作っているシステムとは規模が違うのだよ)
CPAN からなら入れられるが依存関係を潰しながら入れるの大変なので、いつもは yum に RepoForge(旧RPMForge)リポジトリを追加してインストールする。んが、なんと 2016年で RepoForge リポジトリの提供は終わったそうな・・・
「え?この間、サーバ移行したときに使ったけど?」と思ったが、その作業をしたのは 2015年だった(^^;
というわけで、EPEL(Extra Package for Enterprise Linux)リポジトリを使って今回は入れてみる。EPEL は Fedora コミュニティの有志によって作成されたものだ。ありがたや、ありがたや。
・EPELリポジトリの追加
# yum -y install epel-release
・Jcode のインストール
# yum --enablerepo=epel -y install perl-Jcode
・MIME-Words のインストール
EPELリポジトリにも perl-MIME-Words のようなパッケージはない。でも、そう言えば CPAN でインストールするときは install MIME::Words ってやってたけど、MIME-tools-5.XXX.tar.gz とかが読み込まれていたな・・・と。
# yum --enablerepo=epel -y install perl-MIME-tools
ちゃんとインストールされたか確認してみる。
インストール前は use しようとすると、
# perl
use MIME::Words qw (:all);
Can't locate MIME/Words.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at - line 1.
BEGIN failed--compilation aborted at - line 1.
のように「そんなモジュールは見つからない」と怒られていたが、
# perl
use Jcode;
# perl
use MIME::Words qw (:all);
どちらもエラーは出なくなった。ええがな、ええがな。
ちなみに、そのまま EPEL リポジトリを有効にしていると、標準リポジトリと競合して問題が発生することがあるので、また必要なときまで無効にしておく。
・EPELリポジトリの無効化
以前は直接設定ファイルを触っていたけど、便利なコマンドがあったのね。
# yum-config-manager --disable epel
もし yum-config-manager が入っていなかったら、yum -y install yum-utils で入れる。