Amazon Linux 2 のPHP7.4にphp-imapをインストールする

こちらに書いたやり方(amazon-linux-extras)で環境構築したAmazon Linux 2のPHP7.4に、php-imapが入っていなかったのでインストールしようとしたらハマったので、メモ。

ハマった理由というのは、amazon-linux-extrasのyumリポジトリには、そもそもphp-imapが入っていないからで、といって、他のリポジトリにあるphp-imapを入れようとするといろいろと衝突が起きてしまうわけです。

そこで、どうするかというと、ソースコードからPHPをビルドして、できあがったphp-imapのrpmファイルをインストールすれば良いというもの。

この方法(下記で説明する内容)は、こちらのサイトを参考にしました。ありがとうございます。

PHP7.4のソースコードをダウンロード

まず、PHP7.4のソースコードをダウンロードします。yumdownloaderを使うことで、現在yumでインストールされているPHPのソースコードがダウンロードできます。

yumdownloader --source php

コマンドの実行が完了したらダウンロードされたファイルがあるので、展開します。

rpm -ihv php-7.4.21-1.amzn2.src.rpm

php-imapを含んだビルドを行うように指示

rpmbuild/SPECS/php.specを下記のように、編集します。
これでビルド結果にphp-imapが含まれるようになります。

%global with_zip     1
%global with_libzip  1
# Not yet compatible with firebird 3
# https://bugs.php.net/bug.php?id=73512
%global with_firebird 0
%global with_dblib 0
%global with_libcclient 1 ←ここを0から1に変更
%global with_lmdb 0
%global with_argon 0
%global with_sodium 1
%global with_tidy 0

開発ツールのインストール

ビルド用のコマンドがいろいろと必要になるので、Development Toolsをグループインストールします。

yum groupinstall "Development Tools"

必要なパッケージの確認

PHPのビルドにいろいろと依存パッケージが必要になるので、下記のコマンド(ビルドのコマンドですが・・・)で、確認します。

rpmbuild -ba php.spec

いろいろと足りないパッケージが表示されるので、下記のようにインストールします。

yum install bzip2-devel curl-devel httpd-devel pam-devel openssl-devel sqlite-devel libedit-devel libtool-ltdl-devel libzip-devel systemtap-sdt-devel libacl-devel systemd-devel krb5-devel libc-client-devel cyrus-sasl-devel openldap-devel postgresql-devel unixODBC-devel libxml2-devel net-snmp-devel  libxslt-devel libxml2-devel oniguruma-devel libjpeg-devel  libpng-devel freetype-devel libXpm-devel libwebp-devel gmp-devel libdb-devel tokyocabinet-devel aspell-devel libicu-devel enchant-devel libsodium-devel

もう一度、同じコマンドを実行します。もともとビルドコマンドなので、依存パッケージの不足がなければ、ビルドが始まります。

rpmbuild -ba php.spec

ビルドにはしばらくかかります。
ビルドが終わると、rpmbuild/RPMS/x86_64にいろいろとrpmファイルができているので、php-imapをyumでインストールします。

yum install rpmbuild/RPMS/x86_64/php-imap-7.4.21-1.amzn2.x86_64.rpm

これで、Amazon Linux 2のPHP7.4で、php-imapが使えるようになっているはずです。

この記事を書いた人

井上 研一

株式会社ビビンコ代表取締役、ITエンジニア/経済産業省推進資格ITコーディネータ。AI・IoTに強いITコーディネータとして活動。画像認識モデルを活用したアプリや、生成AIを業務に組み込むためのサービス「Gen2Go」の開発などを行っている。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。