
Rocky Linux 8 から Rocky Linux 9 にアップグレード
目次
はじめに
Rocky Linux (以下、RL) 8 から 9 へのアップグレードは公式にはサポートされていません。公式には、データをバックアップし、RL 9 を新規インストールしてからデータを戻してくれ、という事です。が、そんな事やりたくないわけです。
なので、新規インストールせずに RH 8 -> 9 へアップグレードしました。
2026年にもなってこんな事はやりたくないのですが、背に腹はかえられないです。
やった事
参考にしたページ
検索して出てきた以下のページを参考に行いました。基本的にはこれの通りで良いのですが、注意点とかは別途記載します。
How to Upgrade from Rocky Linux 8 to 9
事前にやる事
自前のパソコンで作業するときは別に良いですが、ネットワーク上のサーバー(VPS 等)の場合は、必ず screen コマンドを起動して、その中で作業しましょう。ネットワークが切断されても再度 ssh で接続して screen -r で復帰できます。
手順
Step 1: Backing Up Your Rocky Linux 8 System
参考元ページだとほぼ全てのファイルをバックアップしていますが、容量に余裕が無いので必要最小限にとどめました。
Step 2: Update All Currently Installed Packages
以下のコマンドでパッケージを最新にします。
dnf update
Step 3: Verify the Currently Installed Rocky Version
こんなの確認するまでもない気もしますが、以下のコマンドで RL 8 がインストールされていることを一応確認しましょう。
cat /etc/redhat-release
Step 4: Prepare the System for Migration to Rocky 9
ここからが本番です。
以下のコマンドで、RL 9 レポジトリリスト等をインストールします。バージョン番号(9.7-1.4 等)はこちらのページより最新のものを確認してください。
REPO_URL="https://download.rockylinux.org/pub/rocky/9/BaseOS/x86_64/os/Packages/r"
RELEASE_PKG="rocky-release-9.7-1.4.el9.noarch.rpm"
REPOS_PKG="rocky-repos-9.7-1.4.el9.noarch.rpm"
GPG_KEYS_PKG="rocky-gpg-keys-9.7-1.4.el9.noarch.rpm"
dnf install $REPO_URL/$RELEASE_PKG $REPO_URL/$REPOS_PKG $REPO_URL/$GPG_KEYS_PKG
私の場合は REMI が入っていたせいでちょっとエラーが出ました。解決方法は後述します。
Step 5: Upgrade from Rocky Linux 8 to Rocky Linux 9
さて、アップグレードです。/usr/share/redhat-logos というディレクトリがあると途中で止まるので、事前に名前を変えておきます。
mv /usr/share/redhat-logos{,.bak}
その後、以下のコマンドでアップグレードします。
dnf -y --releasever=9 --allowerasing --setopt=deltarpm=false distro-sync
私は screen を使わずにこのコマンドを実行していたらネットワークが切れてしまい、後始末が若干面倒でした。これも後述します。
依存関係の問題が出る場合は、一旦そのパッケージは削除し、再度上のコマンドを実行します。私は以下のコマンドでパッケージを削除しました。
yum remove iptables-ebtables
Step 6: Rebuild the RPM Database
RL 9 からパッケージデータベースの形式が Berkley DB から SQLite に変わりました。以下の通り DB を再構築します。
rpm --rebuilddb
終わったら再起動します。
reboot
Step 7: Post-installation Steps
アップグレード後の後始末等です。まずはバージョン番号を確認します。
cat /etc/redhat-release
パッケージを最新にします。
dnf update
が、元記事にもあるように上手くいかないことが多いので、悪さをしているモジュールを無効化します。私は13個のモジュールを無効化する必要がありました。
dnf module disable gimp httpd mariadb nginx perl perl-DBD-MySQL perl-DBI perl-IO-Socket-SSL perl-libwww-perl php python27 python36 virt
その後に再度 dnf update を実行すれば完了です。

上手くいかなかった点
REMI が入っていてエラーになった
備忘録のためエラーメッセージを貼っておきます。
# dnf install $REPO_URL/$RELEASE_PKG $REPO_URL/$REPOS_PKG $REPO_URL/$GPG_KEYS_PKG
メタデータの期限切れの最終確認: 2:36:54 前の 2026年03月15日 23時03分28秒 に実施しました。
rocky-release-9.7-1.4.el9.noarch.rpm 37 kB/s | 22 kB 00:00
rocky-repos-9.7-1.4.el9.noarch.rpm 28 kB/s | 12 kB 00:00
rocky-gpg-keys-9.7-1.4.el9.noarch.rpm 28 kB/s | 12 kB 00:00
エラー:
問題: インストール済パッケージの問題 remi-release-8.10-2.el8.remi.noarch
- package remi-release-8.10-2.el8.remi.noarch from @System requires system-release(releasever) = 8, but none of the providers can be installed
- package remi-release-8.10-1.el8.remi.noarch from remi-safe requires system-release(releasever) = 8, but none of the providers can be installe
d
- package remi-release-8.10-2.el8.remi.noarch from remi-safe requires system-release(releasever) = 8, but none of the providers can be installe
d
- package remi-release-8.4-1.el8.remi.noarch from remi-safe requires system-release(releasever) = 8, but none of the providers can be installed
- package remi-release-8.5-2.el8.remi.noarch from remi-safe requires system-release(releasever) = 8, but none of the providers can be installed
- package remi-release-8.5-3.el8.remi.noarch from remi-safe requires system-release(releasever) = 8, but none of the providers can be installed
- package remi-release-8.6-1.el8.remi.noarch from remi-safe requires system-release(releasever) = 8, but none of the providers can be installed
- package remi-release-8.7-2.el8.remi.noarch from remi-safe requires system-release(releasever) = 8, but none of the providers can be installed
- package remi-release-8.8-1.el8.remi.noarch from remi-safe requires system-release(releasever) = 8, but none of the providers can be installed
- package remi-release-8.9-2.el8.remi.noarch from remi-safe requires system-release(releasever) = 8, but none of the providers can be installed
- package remi-release-8.9-3.el8.remi.noarch from remi-safe requires system-release(releasever) = 8, but none of the providers can be installed
- cannot install both rocky-release-9.7-1.4.el9.noarch from @commandline and rocky-release-8.10-1.10.el8.noarch from @System
- cannot install both rocky-release-9.7-1.4.el9.noarch from @commandline and rocky-release-8.10-1.10.el8.noarch from baseos
- cannot install both rocky-release-9.7-1.4.el9.noarch from @commandline and rocky-release-8.10-1.7.el8.noarch from baseos
- cannot install both rocky-release-9.7-1.4.el9.noarch from @commandline and rocky-release-8.10-1.8.el8.noarch from baseos
- cannot install both rocky-release-9.7-1.4.el9.noarch from @commandline and rocky-release-8.10-1.9.el8.noarch from baseos
- 競合するリクエスト
(競合するパッケージを置き換えるには、コマンドラインに '--allowerasing' を追加してみてください または、'--skip-broken' を追加して、インストール不
可のパッケージをスキップしてください または、'--nobest' を追加して、最適候補のパッケージのみを使用しないでください)
解決方法は以下の通りです。
rpm -e remi-release
RL8 と RL9 のパッケージが共にインストール済、という状態になった
アップグレード中にネットワークが切断されたため、RL8 と RL9 のパッケージが両方インストール済という状態になりました。
例を挙げると、以下の2つが同時にインストールされている状態です。
NetworkManager-1.40.16-20.el8_10.x86_64NetworkManager-1.54.0-3.el9_7.x86_64
el8 の方を削除してしまえば良いと思うかもしれませんが、そうすると el9 でインストールされたファイルも削除されてしまうか、エラーになると思います。
結論としては、以下の通りパッケージの実体は削除せずにパッケージ情報だけを削除します。 --justdb がポイントです。
# 一応、パッケージ DB をバックアップ
cp -a /var/lib/rpm /var/lib/rpm.bak.$(date +%Y%m%d)
# パッケージ情報を削除
rpm -e --justdb --nodeps $(rpm -qa | grep el8)
その他やった事
PHP 8.3 のインストール
RL 9 では、REMI を使わなくても PHP の新しいバージョンをインストールすることが出来ます。まずは既存の PHP を削除します。
rpm -e $(rpm -a | grep php)
次にインストールします。
dnf module reset php
dnf module install php:8.3
足りない PHP モジュールは手動で入れます。
dnf install php-pdo php-mysqlnd php-gd php-pecl-zip
やったのはそれくらいです。
まとめと今後
Rocky Linux 8 のサポート期間が終了していたため、RL 9 にアップグレードしました。せっかくなので次は 10 にアップグレードしようと思ったのですが、RL 9 -> RL 10 のアップグレードも公式にはサポートされていません。
一方、Rocky Linux とほぼ同時期に登場した RHEL クローンである AlmaLinux では ELevate という仕組みがあり、古い OS から新しいバージョンにアップグレードできます。
ELevate Quickstart Guide | AlmaLinux Wiki
以前は ELevate で、CentOS 7 -> RL 8 -> RL 9 というアップグレードパスがサポートされていたようです。RL 9 -> 10 もそろそろサポートされるかと思ってさっきのページをみてみたら、今では RL 自体がサポートされていないようです。
ということで、次回は Rocky Linux に見切りを付けて
- RL 9 -> AlmaLinux 9 に移行
- AlmaLinux 9 -> 10 にアップグレード
という流れでやろうと思います。
冒頭にも書きましたが、2026年にもなって OS のアップグレードとか面倒な作業はやりたくないんですが、仕方ないですね。
宣伝
株式会社もばらぶでは、レガシーシステムの移行や OS のアップグレードなども積極的に行っています。何かお困りのことがあれば、お気軽にお問い合わせください。
コメントを残す