ubuntu22.04LTS に PHP7.4 をインストールする(PHPをダウングレードする)。

ubuntuを 20.04LTS から 22.04LTS にOSをアップグレードしたら PHP7.4 が削除されて PHP8.1 がインストールされました。22.04LTS ではデフォルトでサポートされているPHPのバージョンは8.1とのことです。 PHPのバージョンを上げるつもりはなかったので元に戻します。作業はrootユーザーで行いました。

まず、PHP7.4で必要なパッケージのインストールを行います。

# apt install software-properties-common

次に、リポジトリの追加を行います。ppa:ondrej/php リポジトリには過去バージョンのPHPが揃っています。

# add-apt-repository ppa:ondrej/php

いったんここでパッケージリストを更新します。

# apt update

準備ができたので、PHPのインストールを行います。必要そうなパッケージをまとめてインストールします。


# apt install php7.4 php7.4-cli php7.4-fpm php7.4-mysql php7.4-xml php7.4-mbstring php7.4-curl php7.4-zip

これでPHP7.4のインストールができました。ただこのままだとシステムが認識するPHPは8.1のままなので、update-alternatives コマンドで7.4を有効にする設定をします。

# update-alternatives --config php

選択を促すプロンプトが表示されるので、7.4の番号を選んでリターンキーを押下します。


# update-alternatives --config php
alternative php (/usr/bin/php を提供) には 2 個の選択肢があります。

  選択肢    パス           優先度  状態
------------------------------------------------------------
* 0            /usr/bin/php8.1   81        自動モード
  1            /usr/bin/php7.4   74        手動モード
  2            /usr/bin/php8.1   81        手動モード

現在の選択 [*] を保持するには 、さもなければ選択肢の番号のキーを押してください: 1 ←ここを入力
update-alternatives: /usr/bin/php (php) を提供するためにマニュアルモードで /usr/bin/php7.4 を使います

PHPのバージョンを確認して7.4になっていれば完了です。

# php -v

なお nginxでPHPを動かす場合ですが php7.4-fpm をインストールすると /var/run/php 配下に php7.4-fpm.sock というソケットファイルができます。このソケットファイルを nginx.conf の fastcgi_pass ディレクティブに指定すればよいのですが、同ディレクトリには php-fpm.sock というシンボリックリンクがあり、こちらのリンク先は php7.4-fpm.sock になっているようです。

# update-alternatives --display php-fpm.sock


# update-alternatives --display php-fpm.sock
php-fpm.sock - 自動モード
  最適なリンクのバージョンは '/run/php/php7.4-fpm.sock' です
  リンクは現在 /run/php/php7.4-fpm.sock を指しています
  リンク php-fpm.sock は /run/php/php-fpm.sock です
/run/php/php7.4-fpm.sock - 優先度 74

ですので、php-fpm.sock でも良いと思います。

ubuntuを 20.04LTS から 22.04LTS にアップグレードしてみた。

いまさらではありますが ubuntuを 20.04LTS(Focal Fossa) から 22.04LTS(Jammy Jellyfish) にアップグレードしました。ソフトウェアの更新でアップグレードを行います。

アップグレードを押下すると以下の順番でアップグレードが行われます。

  • アップグレードの準備
  • 新しいソフトウェア・チャンネルを設定しています
  • 新しいパッケージの取得
  • アップグレードのインストール
  • クリーンアップ
  • コンピュータの再起動

このような感じです。

「アップグレードの準備」の段階でサードパーティが提供するリポジトリを使わない設定にする旨のメッセージが出ます。これはそうするしかないので閉じるボタンを押下して進めます。

「アップグレードのインストール」はかなり時間がかかります。パソコンの性能にもよるかもしれませんが、アップグレードのインストールだけでも1時間〜1時間半ぐらいかかりました。なお、アップグレードを開始する前に注意を促すダイアログが表示されます。

利用中のアプリケーションは終了させたほうがよいです。バックグラウンドで動かしているものもあれば止めます。僕は mysql-server を止めるのを忘れていたので途中で以下のメッセージが出ました。ライブラリのアップグレードが行われたため mysql-server を再起動する必要があるが、それができないという旨のメッセージのようです。

「クリーンアップ」になると不要になったパッケージを削除するかどうか聞かれます。僕は削除しました。

すべての作業が終わると再起動を促されますので、再起動をします。

アップグレードの途中でサードパーティが提供するリポジトリを使わない設定にする旨のメッセージが出ましたが、それを確認してみました。ソフトウェアとアップデートで他のソフトウェアのタブを見ます。Focal Fossa にアップグレードをして、さらにJammy Jellyfish にアップグレードしているのですが、サードパーティ製の nginx のチェックが外れていました。

必要に応じてチェックをつけます。

22.04LTS にアップグレードをしてから知ったのですが、Firefox は 20.04LTS のときはdebパッケージだったのですが、22.04LTS からはsnapパッケージになりました。アップグレードの途中で以下のメッセージが出ました。

「ubuntu22.04以降、Firefox のすべての新しいリリースはsnapパッケージを通してのみubuntuユーザーに提供されます。このパッケージアップデートをインストールするとシステムがsnapに移行します。」とのことです。

ですので、今まで使っていた Firefox は使えません。ブックマークなどすべてなくなりました。Firefox に残っていたキャッシュも何もかもなくなります。Firefox がまったくの新しいものになりました。

あと、細かいところでviewコマンドを使うと「E1187: Failed to source defaults.vim」というメッセージが出るようになりました。


$ view vhost.conf
E1187: Failed to source defaults.vim
Press ENTER or type command to continue

このエラーは主にvim関連の設定ファイルが見つからないときに出るエラーのようです。ubuntu22.04LTS にアップグレードすると最小構成の vim(vim-tiny)がインストールされるらしく、この vim-tiny 版は defaults.vim(vimの標準設定を読み込むスクリプト)が含まれていないとのこと。そのためviewコマンドを使ったときに設定ファイルが見つからずにエラーが出るようです。

なお、ubuntu24.04LTS(Noble Numbat) ではviewコマンドを実行してもこのエラーは出ません。viのバージョンを確認してこのあたりを比べてみました。

22.04LTS のものです。


$ vi --version
 :
  system vimrc file: "$VIM/vimrc"
    user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
     user exrc file: "$HOME/.exrc"
      defaults file: "$VIMRUNTIME/defaults.vim"
 fall-back for $VIM: "/usr/share/vim"
 :

24.04LTS のものです。


$ vi --version
 :
  system vimrc file: "/etc/vim/vimrc"
    user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
     user exrc file: "$HOME/.exrc"
      defaults file: "$VIMRUNTIME/defaults.vim"
 fall-back for $VIM: "/usr/share/vim"
 :

defaults.vim を参照する前に vimrcというファイルを参照しています。vimrcがない場合、最終的に defaults.vim が使われる設定のようです。

24.04LTS では /etc/vim/vimrc が存在します。22.04LTS でも /etc/vim 配下を見てみると vimrcファイルがあるようなので(これが 20.04LTS のときからあったものなのかは不明)、これをホームディレクトリの配下にコピーすることにしました。

$ mkdir .vim
$ cp -p /etc/vim/vimrc ./.vim/vimrc

こうすることでviewコマンド使用時にエラーが出ることはなくなりました。rootユーザーも同様にホームディレクトリに vimrcファイルをコピーしておきました。