anyenvを使ってPHP 8.0.2をインストールする

ARMアーキテクチャではRemiは使えない模様』で言及のあった通り、ARM64アーキテクチャーではRemiのリポジトリのパッケージを利用できない [1]利用しようとした場合、Not foundのエラーが出る ため、もしARM64アーキテクチャでPHPを使いたい場合は、何かしらの方法で自力でインストールする必要がある。今回はanyenv+phpenvを使ってシステムワイドにインストールする方法について記載したい。

PHPをインストールする

今回のインストール環境

今回は以下の環境でインストールを行った。

  • OS: Red Hat Enterprise Linux 8.3
  • 環境: AWS EC2 (t4g.micro) [2]t4gシリーズはARM64アーキテクチャを採用している。それより前のt3/t3a世代ではx86_64アーキテクチャを採用していた。
  • 備考: EPEL及びCodeReady Linux Builderリポジトリを有効化済み。

ec2-userをwheelグループに追加

以下のコマンドでec2-userをwheelグループに追加する。

sudo gpasswd -a ec2-user wheel

Gitのインストール

もしGitがインストールされていない場合は、以下のコマンドでgitをインストールする。

sudo dnf install git

anyenv/phpenvインストール

環境変数準備

anyenvをシステムワイドにインストールするための環境変数を準備する。bashを使っている場合は、以下のファイルを /etc/profile.d/anyenv.shとして作成する。

export ANYENV_ROOT="/opt/anyenv"
export ANYENV_DEFINITION_ROOT="${ANYENV_ROOT}/share/anyenv-install"
export PATH="${ANYENV_ROOT}/bin:${PATH}"
eval "$(anyenv init --no-rehash -)"

上記が終わったら、一旦ログアウトして、ログインし直す。

anyenvインストール

以下のコマンドで、anyenvを/opt以下にインストールする。

sudo git clone https://github.com/anyenv/anyenv.git /opt/anyenv
sudo mkdir /opt/anyenv/plugins
sudo git clone https://github.com/znz/anyenv-git.git /opt/anyenv/plugins/anyenv-git
sudo git clone https://github.com/znz/anyenv-update.git /opt/anyenv/plugins/anyenv-update

その後、以下のコマンドanyenvの権限を変更する。

sudo chgrp -R wheel /opt/anyenv
sudo chmod -R g+rwxXs /opt/anyenv

その後、以下のコマンドでanyenvで初期化を行う。

anyenv install --init

以下のメッセージが表示されたら、以下のようにManifest directoryの作成場所が聞かれるので、/opt/anyenv/share/anyenv-install(または任意のディレクトリ)であることを確認したら、yを入れてEnterキーを押す。

Manifest directory doesn't exist: /opt/anyenv/share/anyenv-install
Do you want to checkout ? [y/N]:

その後、 以下のコマンドで環境変数のリロードを行う。

exec $SHELL -l

phpenvインストール

以下のコマンドで、phpenvをインストールする。

anyenv install phpenv

インストール完了後、phpenvを利用可能にするために、以下のコマンドを入力するか、ログインし直す必要がある。

exec $SHELL -l

PHPのインストールで必要となるパッケージ類のインストール

その後、PHPのインストールの際には以下のパッケージ群が必要になる。もしインストールしていない場合は、ビルドの前段階でエラーが返ってくる。

  • bzip2
  • bzip2-devel
  • gcc
  • gcc-c++
  • libxml2-devel
  • openssl-devel
  • sqlite-devel
  • libcurl-devel
  • libpng-devel
  • libjpeg-devel
  • libicu-devel
  • oniguruma-devel
  • readline-devel
  • libtidy-devel
  • libxslt-devel
  • libzip-devel
  • make
  • autoconf
  • automake

そのため、以下のコマンドでPHPのパッケージ群をインストールする。

sudo dnf install bzip2 bzip2-devel gcc gcc-c++ libxml2-devel openssl-devel sqlite-devel libcurl-devel libpng-devel libjpeg-devel libicu-devel oniguruma-devel readline-devel libtidy-devel libxslt-devel libzip-devel make autoconf automake

PHPのインストール

上記の対応が終わった場合は、以下のコマンドでPHPをインストールする。

phpenv install 8.0.2

インストール完了後、以下のコマンドでPHPのバージョンを指定する。

phpenv global 8.0.2

その後、以下のコマンドでバージョン名が表示されていれば、インストール完了である。

php --version

最後に

今回はARM64アーキテクチャのRHEL/CentOS系でPHPの新しいバージョンをインストールしようとした場合、Remiリポジトリ経由でインストールすることができないことから、その代替手段としてのインストール方法について記載を行った。

ただ、この方法はかなり特殊で面倒なものであり、パッケージ管理面も煩雑になるため、実用とはしない方が良いだろうなとかんがえている。

References

References
1 利用しようとした場合、Not foundのエラーが出る
2 t4gシリーズはARM64アーキテクチャを採用している。それより前のt3/t3a世代ではx86_64アーキテクチャを採用していた。
タイトルとURLをコピーしました