のどあめ

ググってもなかなか出てこなかった情報を垂れ流すブログ。

Ubuntu 12.04(64bit)にjperlを導入する方法

ちょっと前にjperlなるものを使わざるを得ない機会がありました。
その時に導入に一晩くらいかかってしまったので、その詳細を書いておきます。

そもそもjperlとは何なのか・・・

  • 昔々perlが日本語がうまく扱えないときに、その問題にある程度対処するために作られた
  • 今はencodingプログラマなるものを使えば問題ない
  • Perl 5.5までしか対応していない
  • 現場ではまだまだ現役のところも少なくない

つまり、負の遺産というわけですね・・・

Ubuntu 12.04(64bit)へのjperlの導入

まずは、こちらからperl5.005_04.tar.gzとjperl5.005_04-20040401.pat.gzをダウンロードして、
Webページの指示にしたがってPerlにJperlのパッチを当てる。

$ tar zxvf perl5.005_04.tar.gz
$ gzip -d jperl5.005_04-20040401.pat.gz
$ cd perl5.005_04
$ patch -p1 < ../jperl5.005_04-20040401.pat

次に、既存のperlとは別にperl5.005_04(jperl)をインストールする。

$ sh Configure -Dprefix=/usr/local/perl5.005_04 -Dusethreads -de

それから、

$ make

とするのですが、この段階でいくつかエラーが出るかもしれません(私はでました)。

<command-line>なんとかというエラー

makedependent.SHを編集すればOK

・・・
 '/^#.*<stdin>/d' \
 '/^#.*<builtin>/d' \
 '/^#.*<built-in>/d' \
 '/^#.*<command line>/d' \
 '/^#.*<command-line>/d' \  #この行を追加
 '/^#.*"-"/d' \
 's#\.[0-9][0-9]*\.c#'"$file.c#" \
・・・

math.hがリンクされていないみたいなエラー

sh Configureからやり直し。
■64bit

$ sh Configure -Dprefix=/usr/local/perl5.005_04 -Dusethreads -Dplibpth=/usr/lib/x86_64-linux-gnu -de

■32bit(未確認)

$ sh Configure -Dprefix=/usr/local/perl5.005_04 -Dusethreads -Dplibpth=/usr/lib/i386-linux-gnu -de

さらに、asm/page.hがないとか言われたらシンボリックリンクで対処します。

$ mkdir /usr/include/asm
$ sudo ln -s /usr/src/linux-headers-3.5.0-31/arch/x86/include/asm/page.h /usr/include/asm/page.h

linux-headersのバージョンは違うかもしれません。

そこから、

$ make test
$ sudo make install

して、最後にシンボリックリンクをつくれば完了!

$ sudo ln -s /usr/local/bin/perl5.005_04/bin/perl /usr/local/bin/jperl

実行中に rr_fopen error で /usr/tmp/...のファイルが開けないと言われたら
/usr/tmpディレクトリがないのが原因かもしれません。
その場合は、mkdirで作ってパーミッションを設定すればOKです。


以上です!
これでUbuntuでもjperlが使えます!!
たぶん!

今回の感想

  • jperlは一生使いません。
  • Redhat系は優秀