概要
Ubuntu22.04に最新のphp8.3をインストールしようとしたらエラーになりました。
※2024/11/01時点
通常インストールだとphp8.1になるのでphp8.3のパッケージをインストールする必要がありました。
環境
構築:docker Desktop
OS:ubuntu:22.04
通信:apache2
原因
proxyを通して通信を行うような場所なので、apacheの通信が悪さしてそうだと当たりをつける。
add-apt-repositoryを使うとproxyを通した通信でエラーになることがわかる。
解決方法
パッケージの一覧のサイト。
今回インストールしたいphp8.3のパッケージサイト。
最終的に以下のコマンドに必要情報を入れることで、パッケージがインストールできる。
curl -fsSL "http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x${fingerprint}" > "./${repo}.asc"
cat "./${repo}.asc" | sudo gpg --dearmor -o "/etc/apt/keyrings/${repo}.gpg"
echo "deb [signed-by=/etc/apt/keyrings/${repo}.gpg] http://ppa.launchpad.net/${repo}/${subrepo}/ubuntu ${YOUR_UBUNT_VERSION_HERE} main" | sudo tee -a /etc/apt/sources.list.d/${repo}.list
実行コマンドに必要な情報を抽出
通常のリポジトリインストールコマンドから
add-apt-repository ppa:ondrej/php
${repo} = ondrej
${subrepo} = php
サイトのPPAの詳細情報から
${fingerprint} = B8DC7E53946656EFBCE4C1DD71DAEAAB4AD4CAB6
Ubuntuのバージョンから
${YOUR_UBUNT_VERSION_HERE} = jammy
依存関係のリポジトリの情報
PPA for Apache 2.x
https://launchpad.net/~ondrej/+archive/ubuntu/apache2
最終的なコマンド
apt-get update && apt-get install -y curl gpg
curl -fsSL "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xB8DC7E53946656EFBCE4C1DD71DAEAAB4AD4CAB6" > "/etc/apt/keyrings/ondrej.asc"
cat "/etc/apt/keyrings/ondrej.asc" | gpg --dearmor -o "/etc/apt/keyrings/ondrej.gpg"
echo "deb [signed-by=/etc/apt/keyrings/ondrej.gpg] http://ppa.launchpad.net/ondrej/apache2/ubuntu jammy main" | tee -a /etc/apt/sources.list.d/ondrej.list
echo "deb [signed-by=/etc/apt/keyrings/ondrej.gpg] http://ppa.launchpad.net/ondrej/php/ubuntu jammy main" | tee -a /etc/apt/sources.list.d/ondrej.list
apt-get update && apt-get install -y apache2 php8.3
参考文献