【RHEL9】なぜかperl5.8系をソースコンパイルして導入したのでメモ

# 概要

とても古いシステムのリプレースのときに、RHEL9環境にperl5.8系を入れることを試してみたのでメモ。**~~なぜこんなことをしなきゃならんのだ~~**

# 流れ

やったことの流れを記録的にメモ

## Perlbrewのダウンロードとインストール

ひとまず順当な流れで導入するためにperlbrewを導入
```bash
curl -L https://install.perlbrew.pl | bash
source ~/perl5/perlbrew/etc/bashrc
source ~/.bashrc
```
## Perl 5.8.9 のソースビルドとインストール

### perlbrewによるインストールを試す（Perlのソースコード取得）

ひとまずperlbrewでのインストールを試したところ、なにかエラーが出る

```bash
$ perlbrew install perl-5.8.9
Installing /home/user/perl5/perlbrew/build/perl-5.8.9/perl-5.8.9 into ~/perl5/perlbrew/perls/perl-5.8.9

This could take a while. You can run the following command on another shell to track the status:

  tail -f ~/perl5/perlbrew/build.perl-5.8.9.log

Installation process failed. To spot any issues, check

  /home/user/perl5/perlbrew/build.perl-5.8.9.log

If some perl tests failed and you still want to install this distribution anyway,
do:

  (cd /home/user/perl5/perlbrew/build/perl-5.8.9/perl-5.8.9; make install)

You might also want to try upgrading patchperl before trying again:

  perlbrew install-patchperl

Generally, if you need to install a perl distribution known to have minor test
failures, do one of these commands to avoid seeing this message:

  perlbrew --notest install perl-5.8.9
  perlbrew --force install perl-5.8.9
```

ログなどいろいろ確認はしてみたけど、いまいち解決できなくて面倒だったのでソースからビルドすることに

### 2024/12/19追記

普通にDevel::PatchPerlをcpanインストールしたらエラーが解消したので追記しておきます。

```bash
$ cpan
cpan[1]> install Devel::PatchPerl
...インストール
```

:::note warn
root権限でインストールしようとするとエラーになります。一緒に導入される ```Module::Pluggable```というパッケージのテストがroot権限だとコケる模様
:::

:::note warn
perlbrew installのときに稼働するpatchperlというスクリプトの中でDevel::Patchperlの読み込みに失敗したので、エラーを確認してpatchperlが認識可能な領域にDevel::PatchPerlを配置することで対応しています。どうも、スクリプト内で@INCを書き換えている？
:::

perlをインストールするとき、エラーが出る場合はテストをスキップする

```bash
$ perlbrew --notest install perl-5.8.x
Installing /home/user/perl5/perlbrew/build/perl-5.8.x/perl-5.8.x into ~/perl5/perlbrew/perls/perl-5.8.x

This could take a while. You can run the following command on another shell to track the status:

  tail -f ~/perl5/perlbrew/build.perl-5.8.x.log

perl-5.8.x is successfully installed.

$ perlbrew list
  perl-5.8.x                                
$ perlbrew use perl-5.8.x
$ perl -v

This is perl, v5.8.x built for x86_64-linux
(with 1 registered patch, see perl -V for more detail)

Copyright 1987-2002, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'.  If you have access to the
Internet, point your browser at http://www.perl.com/, the Perl Home Page.
```

### ソースからperl5.8.9をビルドする

perlbrewでインストールを試みた際に、ソースも落ちてきているので確認

```
cd ~/perl5/perlbrew/build/perl-5.8.9/
```

Configure ~ make installまでを実行

```bash
$ ./Configure -des -Accflags='-fPIC' -Dprefix=$HOME/perl5/perlbrew/perls/perl-5.8.4
```

:::note
-des: デフォルトの設定でビルド
-Accflags='-fPIC': コンパイル時にPIC（Position Independent Code）を有効化
-Dprefix: インストール先ディレクトリ
:::

```bash
$ make test
$ make
$ make install
```

いろいろ出るが、異常終了しなければとりあえず導入できます。

## 導入確認

インストールしたPerlのディレクトリに移動し、バージョンを確認

```bash
$ cd ~/perl5/perlbrew/perls/perl-5.8.4/bin/
$ ./perl -v
This is perl, v5.8.9 built for x86_64-linux

Copyright 1987-2008, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
```

問題なさそうなので、シンボリックリンクも作成しておく

```bash
$ ln -s /home/user/perl5/perlbrew/perls/perl-5.8.4/bin/perl perl5.8.9
```

シンボリックリンクの参照がうまく行っていることを確認

```bash
$ perl5.8.9 -v
This is perl, v5.8.9 built for x86_64-linux

Copyright 1987-2008, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
```

# 終わり

かなり無理矢理導入したので動くかはわかりません。
過去の遺産を生かし続けるのも限界があるので、こんなことはせずに基本的には最新版で動くようにスクリプト類を改修することを猛烈におすすめしておきます。