Perl の CPAN モジュールの RPM 化
こんにちは、moriyama です。
次期 Asianux (Asianux Server 3) に、Perl でのエンコーディング変換を行なう Encode モジュールに eucJP-ms などのエンコーディングを追加するために、Encode::EUCJPMS モジュールを入れることになりました。
CPAN に登録されている Perl のモジュールは、cpan2rpm というツールで自動的に spec ファイルを生成して RPM パッケージ化する事ができる為、このツールを使わせてもらいました。
それでは、実際に cpan2rpm を使って、Encode::EUCJPMS モジュールを RPM 化してみましょう。
cpan2rpm のビルド&インストール
- cpan2rpm-2.028.tar.gz をダウンロード
- http://perl.arix.com/cpan2rpm/ からは cpan2rpm の tarball をダウンロードできなかったため、他のミラーサイトから cpan2rpm-2.028.tar.gz をダウンロードしてきました。
- tarball の展開
$ tar zxvf cpan2rpm-2.028.tar.gz
- Makefile、spec ファイルの生成
$ cd cpan2rpm-2.028 $ perl Makefile.PL
- 一般ユーザーの権限で RPM パッケージを作成できるように ~/.rpmmacros に次の様な設定をしておく。
%_topdir /home/ユーザー名/rpm
- ディレクトリ作成
mkdir -p ~/rpm/{RPMS,SRPMS,SOURCES,SPECS,BUILD} - ファイルのコピー
$ cp ../cpan2rpm-2.08.tar.gz ~/rpm/SOURCES $ cp cpan2rpm.spec ~/rpm/SPECS $ cd ~/rpm/SPECS
- cpan2rpm パッケージのビルド
$ rpmbuild -ba cpan2rpm.spec
- cpan2rpm パッケージのインストール
$ su # rpm ../RPMS/noarch/cpan2rpm-2.028-1.noarch.rpm # exit
perl-Encode-EUCJPMS パッケージの作成
- spec ファイルの生成
$ cpan2rpm --spec-only Encode::EUCJPMS
- spec ファイルの修正
次の修正をしておきます。- buildarch: noarch の削除
- %post, %postun の追加 - use Encode だけで Encode::EUCJPMS の追加エンコーディングを使えるようにする為。
%post enc2xs -C > /dev/null 2>&1 exit 0 %postun enc2xs -C > /dev/null 2>&1 exit 0
- release 番号のアップ
- その他、必要と思われる修正
- %changelog への修正内容の追記
- perl-Encode-Encode パッケージのビルド
$ rpmbuild -ba Encode-EUCJPMS.spec
インストール&確認
- perl-Encode-Encode パッケージのインストール
$ su # rpm -ivh ../RPMS/i386/perl-Encode-EUCJPMS-*.rpm $ exit
- piconv コマンドで確認
$ piconv -l | grep -i eucjp-ms
eucJP-ms が表示されれば、OK です。
まだ、動作確認はしていませんが、convmv コマンドでも、Encode モジュールを使っているので、eucJP-ms で運用されいた Samba 3.0 を UTF-8 環境へ以降する場合などに、convmv が利用できる事でしょう。
また、Encode::EUCJPMS モジュールには、eucJP-ms 以外にも、Wincows の日本語のコードページとして cp51932 (EUC-JP), cp50220 (ISO-2022-JP 半角カナ→全角カナ変換), cp50221 (ISO-2022-JP + 半角カナ) も含まれているので、Encode モジュール標準でサポートしている cp932 と合わせてつかうと、Perl による Web アプリケーションでの Windows 機種依存文字を適切に処理できるようになるでしょう。
Windows とのデータ交換をスムースに行なえるようにすることで、Linux と Windows との間の障壁を低くして、Linux が得意なところでは、Linux を今まで以上に活用していただけたらと願っています。




cpan2rpm というツールはCPANからのDL(以下)も自動的に(内部で?)やってくれるのですね。勉強になりました。機会があれば使ってみようと思います:-)
# perl -MCPAN -e shell
cpan> get Encode::EUCJPMS
cpan> install Encode::EUCJPMS
cpan> quit
#
投稿: kyagi | 2007年5月 8日 (火) 19:31
kyagi さん、コメントありがとうございます。
cpan2rpm は、オプション指定なしだと CPANからダウンロードしてきて、RPM パッケージの作成までをやってくれます。
今回は、--spec-only オプションを付けて、spec ファイルを作る所で、一旦止めて、spec ファイルを修正してから RPM パッケージを作るようにしました。
インストールは、rpm コマンドを使うようにします。
投稿: moriyama | 2007年5月 8日 (火) 20:59