TL;DR
追記:
leappをインストールしたら、次の様にproxy設定してから実際のコマンドを実行。
$ echo $https_proxy
https_proxy=http://proxy.example.co.jp:8080
$ sudo sed -i "/^enabled=.*/a proxy=$https_proxy" \
/etc/leapp/files/leapp_upgrade_repositories.repo
はじめに
CentOS7.xから各種RHEL8.xベースのOSへインプレースアップグレードするには、ELevateというツールで可能。
Qiitaの記事で見つけたのはこちら、
問題点(Proxy環境下)
動作中のCentOS7上でまずパッケージ環境を/var/lib/leapp
にダウンロードして準備を行い、再起動で適用していく動作の様だが、このパッケージ群をdnfでダウンロードできなかった。
====> * target_userspace_creator
Initializes a directory to be populated as a minimal environment to run binaries from the target system.
AlmaLinux 8 - BaseOS 0.0 B/s | 0 B 00:00
AlmaLinux 8 - AppStream 0.0 B/s | 0 B 00:00
AlmaLinux 8 - HighAvailability 0.0 B/s | 0 B 00:00
AlmaLinux 8 - Extras 0.0 B/s | 0 B 00:00
AlmaLinux 8 - PowerTools 0.0 B/s | 0 B 00:00
AlmaLinux 8 - ResilientStorage 0.0 B/s | 0 B 00:00
No match for argument: dnf
No match for argument: dnf-command(config-manager)
結果、sudo leapp preupgrade
の段階でエラー終了する。
============================================================
ERRORS
============================================================
2022-05-05 10:10:10.123456 [ERROR] Actor: target_userspace_creator
Message: Unable to install RHEL 8 userspace packages.
Summary:
Details: Command ['systemd-nspawn', '--register=no', '--quiet', '-D', '/var/lib/leapp/scratch/mounts/root_/system_overlay', '--setenv=LEAPP_NO_RHSM=0', '--setenv=LEAPP_EXPERIMENTAL=0', '--setenv=LEAPP_COMMON_TOOLS=:/etc/leapp/repos.d/system_upgrade/el7toel8/tools', '--setenv=LEAPP_COMMON_FILES=:/etc/leapp/repos.d/system_upgrade/common/files:/etc/leapp/repos.d/system_upgrade/el7toel8/files', '--setenv=LEAPP_UNSUPPORTED=0', '--setenv=LEAPP_EXECUTION_ID=5cf5ff2a-ddd2-40eb-8824-32809de9a6bc', '--setenv=LEAPP_HOSTNAME=centos7.internal.example.co.jp', 'dnf', 'install', '-y', '--nogpgcheck', '--setopt=module_platform_id=platform:el8', '--setopt=keepcache=1', '--releasever', u'8.4', '--installroot', '/el8target', '--disablerepo', '*', '--enablerepo', u'almalinux8-baseos', '--enablerepo', u'almalinux8-powertools', '--enablerepo', u'almalinux8-resilientstorage', '--enablerepo', u'almalinux8-extras', '--enablerepo', u'almalinux8-highavailability', '--enablerepo', u'almalinux8-appstream', 'dnf', 'dnf-command(config-manager)', '--disableplugin', 'subscription-manager'] failed with exit code 1.
Stderr: Failed to create directory /var/lib/leapp/scratch/mounts/root_/system_overlay//sys/fs/selinux: Read-only file system
Failed to create directory /var/lib/leapp/scratch/mounts/root_/system_overlay//sys/fs/selinux: Read-only file system
Host and machine ids are equal (cc44730a6e0347cb8d7e5d87a0c496bb): refusing to link journals
Failed to synchronize cache for repo 'almalinux8-baseos', ignoring this repo.
Failed to synchronize cache for repo 'almalinux8-appstream', ignoring this repo.
Failed to synchronize cache for repo 'almalinux8-highavailability', ignoring this repo.
Failed to synchronize cache for repo 'almalinux8-extras', ignoring this repo.
Failed to synchronize cache for repo 'almalinux8-powertools', ignoring this repo.
Failed to synchronize cache for repo 'almalinux8-resilientstorage', ignoring this repo.
Error: Unable to find a match: dnf dnf-command(config-manager)
============================================================
END OF ERRORS
============================================================
確認
ログ
sudo leapp preupgrade --verbose
にて詳細表示するとcurlがProxyを使わず直接アクセスしようとしている。
repo: downloading from remote: almalinux8-baseos
AlmaLinux 8 - BaseOS 0.0 B/s | 0 B 00:00
Cannot download 'https://mirrors.almalinux.org/mirrorlist/8/baseos': Cannot prepare internal mirrorlist: Curl error (7): Couldn't connect to server for https://mirrors.almalinux.org/mirrorlist/8/baseos [Failed to connect to 2600:1f18:448e:8a30:1553:55e7:ad8b:f77c: Network is unreachable].
設定確認
- 一般的な
https_proxy
,HTTPS_PROXY
などが一通り設定してあってもダメ。 - curlが使われている様なので、
.curlrc
を設定してもダメ。 -
/etc/dnf/dnf.conf
のことは忘れてました…(後述)(leappのインストールとともにdnfもCentOS7にインストールされる) →追記preupgade
は成功するが実際のupgrade
時に失敗する。
対応
leappは環境変数を見てくれないので、次の様にアップグレード用リポジトリーの設定にproxy設定を加える。
$ echo $https_proxy
https_proxy=http://proxy.example.co.jp:8080
$ sudo sed -i "/^enabled=.*/a proxy=$https_proxy" \
/etc/leapp/files/leapp_upgrade_repositories.repo
後で調べる→やってみた
RHEL8系を触ったことがなくdnf環境は始めたなので、/etc/dnf/dnf.conf
にproxyを加える確認はしていなかった。まだまだCentOS7環境が残っているので、後日確認して見る予定。
↓追記
何度かのフェーズでアップグレードが行われるようで、まずはCentOS7上に入ったdnfが実行され、この時点では、/etc/dnf/dnf.conf
が参照される模様、その後、/var/lib/leapp/el8userspace/
をルートにAlmaLinuxなりのEL8のイメージが展開され、そのフェーズでは、/var/lib/leapp/el8userspace/etc/dnf/dnf.conf
が参照される。ここは設定するタイミングなく実行されるので、この時にダウンロードに失敗していた。なので結局あらかじめ/etc/leapp/files/leapp_upgrade_repositories.repo
にproxy設定を入れておくのが確実っぽい。