dnf module switch-to でストリームを変更する

AlmaLinux 9 に PHP をインストールする』や『RemiリポジトリからPHP8.3をインストールする』でインストールした PHP のバージョンをアップグレードしたいんだけど?ってときは dnf module switch-to から、モジュールのストリームを切り替えることで実現できます。めっちゃ簡単で便利!!

んじゃ、実際にやってみましょう。

前提

  1. OS は今回も AlmaLinux 9.5 です
  2. PHPは AppStream リポジトリの PHP8.2 が最小構成で入ってる状態とします
  3. AppStream リポジトリの PHP8.2 から Remi リポジトリの PHP8.3 に切り替えます
php -v

PHP 8.2.13 (cli) (built: Nov 21 2023 09:55:59) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.2.13, Copyright (c) Zend Technologies
dnf module list php
AlmaLinux 9 - AppStream
Name              	Stream               	Profiles                                   	Summary
php               	8.1                  	common [d], devel, minimal                 	PHP scripting language
php               	8.2 [e]              	common [d], devel, minimal [i]             	PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name              	Stream               	Profiles                                   	Summary
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

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

dnf module switch-to php:remi-8.3

モジュールの入れ替えになるんで root 権限なり sudo で実行する形は必要なんですが、見出しの 1コマンドで終わります。

sudo dnf module -y switch-to php:remi-8.3

Last metadata expiration check: 0:12:34 ago on Thu 12 Sep 2024 01:49:36 PM UTC.
Dependencies resolved.
====================================================================================================================================
 Package                   	Architecture          	Version                          	Repository                   	Size
====================================================================================================================================
Upgrading:
 php-cli                   	x86_64                	8.3.11-1.el9.remi                	remi-modular                	5.6 M
 php-common                	x86_64                	8.3.11-1.el9.remi                	remi-modular                	1.2 M
Switching module streams:
 php                                                 	8.2 -> remi-8.3

Transaction Summary
====================================================================================================================================
Upgrade  2 Packages

Total download size: 6.8 M
Downloading Packages:
(1/2): php-common-8.3.11-1.el9.remi.x86_64.rpm                                                  	160 kB/s | 1.2 MB 	00:07    
(2/2): php-cli-8.3.11-1.el9.remi.x86_64.rpm                                                     	330 kB/s | 5.6 MB 	00:17	 
------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                           	387 kB/s | 6.8 MB 	00:18	 
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing    	:                                                                                                        	1/1  
  Running scriptlet: php-common-8.3.11-1.el9.remi.x86_64                                                                    	1/4  
  Upgrading    	: php-common-8.3.11-1.el9.remi.x86_64                                                                    	1/4  
  Upgrading    	: php-cli-8.3.11-1.el9.remi.x86_64                                                                       	2/4  
  Cleanup      	: php-cli-8.2.13-1.module_el9.4.0+65+49ff6472.x86_64                                                     	3/4  
  Cleanup      	: php-common-8.2.13-1.module_el9.4.0+65+49ff6472.x86_64                                                  	4/4  
  Running scriptlet: php-common-8.2.13-1.module_el9.4.0+65+49ff6472.x86_64                                                  	4/4  
  Verifying    	: php-cli-8.3.11-1.el9.remi.x86_64                                                                       	1/4  
  Verifying    	: php-cli-8.2.13-1.module_el9.4.0+65+49ff6472.x86_64                                                     	2/4  
  Verifying    	: php-common-8.3.11-1.el9.remi.x86_64                                                                    	3/4  
  Verifying    	: php-common-8.2.13-1.module_el9.4.0+65+49ff6472.x86_64                                                  	4/4  

Upgraded:
  php-cli-8.3.11-1.el9.remi.x86_64                            	php-common-8.3.11-1.el9.remi.x86_64

Complete!

確認してみましょう。

php -v

PHP 8.3.11 (cli) (built: Aug 27 2024 19:16:34) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.3.11, Copyright (c) Zend Technologies

PHP のバージョンはちゃんと切り替わっています。

dnf module list php

Last metadata expiration check: 0:13:36 ago on Thu 12 Sep 2024 01:52:59 PM UTC.
AlmaLinux 9 - AppStream
Name             	Stream                   	Profiles                                  	Summary
php              	8.1                      	common [d], devel, minimal                	PHP scripting language
php              	8.2                      	common [d], devel, minimal                	PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name             	Stream                   	Profiles                                  	Summary
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], devel, minimal [i]            	PHP scripting language

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

ストリームも Remi リポジトリの remi-8.3 に変わってますね。プロファイルも切り替え前が minimal だったので、切替後も minimal となります。

一応、dnf module reset でストリームの選択をリセットしてから、dnf module enable php:remi-8.3dnf module install php/minimal と手動でインストールしても同じことができるんですが、コマンド一発で解決すると簡単でとても良いです!!

参考記事など