dnfでphpのバージョンを指定してモジュールでインストールする方法


dnfとは

dnf は yum の後継となるパッケージ管理コマンドです。

Dandified Yum の略で yum から派生して速度の改善がされていたり、モジュールの切り替えの簡易化などの機能が追加されています。

実際に使ってみる

今回はRedHat UBIで環境を構築して、新しいバージョンのphpを使えるようにしました。

そのままのリポジトリだとPHPのバージョンが7なので、dnfを使用して8系をインストールします。

dockerコンテナを準備する

docker hub から redhat/ubi8 のコンテナを取得

docker pull redhat/ubi8:latest

コンテナを起動してシェルスクリプトに入る

docker run -it redhat/ubi8:latest

dnfを使ってパッケージの確認

phpがインストールされているか確認する

dnf list installed

インストールされていなかったので、いまのリポジトリで使えるPHPを確認する

dnf list php*

7.2.24 はありますが、新しいバージョンである8はありませんでした。

8をインストールをするためにリポジトリを追加します。

現在のリポジトリを確認

dnf repolist --all

今回使いたいリポジトリは epelremi
現在のリポジトリには含まれていなかったのでリポジトリを追加します。

epelリポジトリを追加。

dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

remiリポジトリを追加。

dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

改めて追加したリポジトリも含めて使えるPHPを確認する

dnf list php*

結果

5.6
7.2
7.3
7.4
8.0
8.1
8.2
8.3

8.3までのバージョンが使えるようになりました。

バージョンを指定してモジュール形式でインストール

ここで yum であればそのまま

yum install php83

のコマンドを入力してパッケージを追加しますが、追加したremiリポジトリからのインストールだと通常時と違いremiフォルダにインストールされます。

今後のことを考えるとフォルダが違うのはあまり望ましくありません。

そこでdnf にはモジュールとして、パッケージのバージョンを指定する方法があります。

モジュールとパッケージのリストを表示

dnf module list php

下記のようなリポジトリとパッケージのリストが表示されます。
現在は
7.2[d]がついているので、基本リポジトリの7.2がデフォルトとなっています。

Remi's Modular repository for Enterprise Linux 8 - aarch64
Name                            Stream                              Profiles                                              Summary
php                             remi-7.2                            common [d], devel, minimal                            PHP scripting language
php                             remi-7.3                            common [d], devel, minimal                            PHP scripting language
php                             remi-7.4                            common [d], devel, minimal                            PHP scripting language
php                             remi-8.0                            common [d], devel, minimal                            PHP scripting language
php                             remi-8.1                            common [d], devel, minimal                            PHP scripting language
php                             remi-8.2                            common [d], devel, minimal                            PHP scripting language
php                             remi-8.3                            common [d], devel, minimal                            PHP scripting language

Red Hat Universal Base Image 8 (RPMs) - AppStream
Name                            Stream                              Profiles                                              Summary
php                             7.2 [d]                             common [d], devel, minimal                            PHP scripting language
php                             7.3                                 common [d], devel, minimal                            PHP scripting language
php                             7.4                                 common [d], devel, minimal                            PHP scripting language
php                             8.0                                 common [d], devel, minimal                            PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

remiリポジトリの8.3のモジュールをインストールします。

dnf module install php:remi-8.3

インストール結果の確認

現在のモジュールとパッケージのリストを表示

dnf module list php

remiリポジトリの8.3[e][i]がついていいます。

Remi's Modular repository for Enterprise Linux 8 - aarch64
Name                          Stream                                Profiles                                                Summary
php                           remi-7.2                              common [d], devel, minimal                              PHP scripting language
php                           remi-7.3                              common [d], devel, minimal                              PHP scripting language
php                           remi-7.4                              common [d], devel, minimal                              PHP scripting language
php                           remi-8.0                              common [d], devel, minimal                              PHP scripting language
php                           remi-8.1                              common [d], devel, minimal                              PHP scripting language
php                           remi-8.2                              common [d], devel, minimal                              PHP scripting language
php                           remi-8.3 [e]                          common [d] [i], devel, minimal                          PHP scripting language

Red Hat Universal Base Image 8 (RPMs) - AppStream
Name                          Stream                                Profiles                                                Summary
php                           7.2 [d]                               common [d], devel, minimal                              PHP scripting language
php                           7.3                                   common [d], devel, minimal                              PHP scripting language
php                           7.4                                   common [d], devel, minimal                              PHP scripting language
php                           8.0                                   common [d], devel, minimal                              PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

バージョンを表示。

php -v

8.3がインストールされてることが確認できます。

PHP 8.3.3 (cli) (built: Feb 13 2024 15:41:14) (NTS gcc aarch64)
Copyright (c) The PHP Group
Zend Engine v4.3.3, Copyright (c) Zend Technologies

dnfのメリット

phpだけではなくapache、nginx、php-fpmなど他のパッケージでもモジュールでインストールすることができます。

本番環境の構築だけでなく、他の環境をPCでローカル環境として再現する場合などdnfは便利なパッケージ管理コマンドです。

また、モジュール形式でインストールすると有効なバージョンの切り替えもできるらしいので、これはありがたい機能。

dnf module switch-to module:version

現在未評価

コメント

コメントを投稿
コメントするには TORICO-ID にログインしてください。
ログイン コメント利用規約