概要
先日、CentOS7で動いていたサーバをAlmalinux8へ移行しました。
以降にあたっていくつか躓いた点があったので、共有として残します。
Almalinuxの公式ガイド通りの手順になりますが、
実施にあたって調べた点がいくつかあるので、それらを解説しながら記載します。
移行手順
STEP1: 既存システムを更新
まず既存システムを最新バージョンへアップデートします。
これは、おそらく後述のOSの移行プログラム(leapp)の実行環境として最新のCentOS7環境が推奨されるための手順です。
# yumのリポジトリを更新
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://el7.repo.almalinux.org/centos/CentOS-Base.repo
# 既存システムを更新
sudo yum upgrade -y
# 再起動
sudo reboot
curlの処理は何をやっている?
- 1行目のcurlはyumの参照先をAlmalinux提供のリポジトリになるよう書き換えています。(CentOS7のリポジトリは既に閉鎖されて使えないため)
yum updateとyum upgradeの違い
- 結論、どちらも変わらないようです。
- yum upgradeだと不要なパッケージを削除しますが、デフォルト設定ではyum updateでも削除されるとのこと
STEP2: leappをインストールする
OSの移行プログラム(leapp)をインストールします。
# almalinuxのリポジトリを追加
sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm --eval %rhel).noarch.rpm
# leappのパッケージをインストール
sudo yum install -y leapp-upgrade leapp-data-almalinux
STEP3: leappを実行
いよいよleappを実行しますが、事前チェックであるleapp preupgrade
は必ず失敗します。
# アップグレード前のチェックを実行、1回目は必ず失敗する
sudo leapp preupgrade
表示されるエラーは以下
============================================================
UPGRADE INHIBITED
============================================================
Upgrade has been inhibited due to the following problems:
1. Inhibitor: Missing required answers in the answer file
Consult the pre-upgrade report for details and possible remediation.
/var/log/leapp/answerfileを見ると下記の記述がありました。
pam_pkcs11というモジュールはRHEL 8で廃止されたため、アップデートに時に削除して良いか聞かれています。
cat /var/log/leapp/answerfile
[remove_pam_pkcs11_module_check]
# Title: None
# Reason: Confirmation
# =================== remove_pam_pkcs11_module_check.confirm ==================
# Label: Disable pam_pkcs11 module in PAM configuration? If no, the upgrade process will be interrupted.
# Description: PAM module pam_pkcs11 is no longer available in RHEL-8 since it was replaced by SSSD.
# Reason: Leaving this module in PAM configuration may lock out the system.
# Type: bool
# Default: None
# Available choices: True/False
# Unanswered question. Uncomment the following line with your answer
# confirm =
この「remove_pam_pkcs11_module_check」に関する問題は必ず発生するらしく、AlmaLinuxの移行ガイドに対応方法が載っているのでその方法で対処します。
# 前述のanswerfileの問いかけにTrueで回答
sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True
移行ガイドには、よく発生するエラーの対処方法として下記も載っていましたが、自分の環境ではこれは不要でした。
answerfileに当該の対応が必要な旨の記述があったら、こちらを実行すべきかと思います。
# pata_acpiというカーネルモジュールをアンロード
sudo rmmod pata_acpi
# rootでSSHログインできるように変更
echo PermitRootLogin yes | sudo tee -a /etc/ssh/sshd_config
上手くいっていればこの時点で、leappが成功するようになっているので実施します。
# OS移行を実施
sudo leapp upgrade
# 再起動
sudo reboot
# 再起動後、OSがアップデートされたかを確認
cat /etc/os-release
遭遇したエラー
以下はアップデートまでに遭遇したエラーとその際の対応方法です。
1. mysqlのアップデートエラー
yum upgrade -y
実行の際に以下のエラーが発生
どうやらパッケージのインストールに使うGPGキーが古いらしい
community/packages/mysql-community-client-5.7.44-1.el7.x86_64.rpm: ヘッダー V4 RSA/SHA256 Signature、鍵 ID 3a79bd29: NOKEY
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql から鍵を取得中です。
The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.
Failing package is: mysql-community-client-5.7.44-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
対応としてGPGキーの再インポートを行いました。
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
2. libwebpパッケージが競合する
leapp upgrade
を実行した所下記のエラーが表示されました。
leappはlibwebpパッケージをインストールしようとしていますが、libwebp7というRemiリポジトリ由来のパッケージが競合しているため、処理が進行できません。
RPMパッケージをカスタムインストールした場合や、サードパーティのリポジトリからパッケージを導入している場合、同様の競合が発生することがあるようです。
STDERR:
Error: Transaction test error:
file /usr/lib64/libwebp.so.7 from install of libwebp-1.0.0-9.el8_9.1.x86_64 conflicts with file from package libwebp7-1.0.3-2.el7.remi.x86_64
file /usr/lib64/libwebpdecoder.so.3 from install of libwebp-1.0.0-9.el8_9.1.x86_64 conflicts with file from package libwebp7-1.0.3-2.el7.remi.x86_64
file /usr/lib64/libwebpdemux.so.2 from install of libwebp-1.0.0-9.el8_9.1.x86_64 conflicts with file from package libwebp7-1.0.3-2.el7.remi.x86_64
file /usr/lib64/libwebpmux.so.3 from install of libwebp-1.0.0-9.el8_9.1.x86_64 conflicts with file from package libwebp7-1.0.3-2.el7.remi.x86_64
対応としては、競合元になっているパッケージを削除して、OS移行後に再度インストールしました。
他のパッケージで発生した場合でもこうして、一旦削除→再インストールをするしかないと思います。
# libwebp7を削除、この時依存関係の整理でphp-gdも削除される
sudo yum remove libwebp7
# OS移行後に再度インストールを行う
sudo yum install libwebp7 --enablerepo=remi-php70