In-place upgrade seems working, but rather hacky. Some of this is likely installation-specific, the below is intended for a small HPC cluster nodes behind a firewall. Adjust to your needs, scripts and clush greatly help. I added some reasoning to make the customization easier.
- Get the Centos 9 Stream repos.
dnf install -y \
http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/Packages/centos-stream-repos-9.0-26.el9.noarch.rpm \
http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/Packages/centos-stream-release-9.0-26.el9.noarch.rpm \
http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/Packages/centos-gpg-keys-9.0-26.el9.noarch.rpm
- Remove stuff which breaks the upgrade.
dnf remove iptables-ebtables-1.8.5-11.el8.x86_64 -y
dnf config-manager --disable raven*
dnf remove epel-release* -y
- Upgrade most of the packages.
dnf -y --releasever=9-stream --allowerasing --setopt=deltarpm=false distro-sync
rpmdb --rebuilddb
dnf clean packages -y
- Install EPEL for Centos 9 Stream.
dnf config-manager --set-enabled crb -y
dnf install epel-release epel-next-release -y
- Remove more broken stuff.
dnf remove arpack -y
dnf module reset javapackages-tools llvm-toolset llvm-toolset-next perl perl-IO-Socket-SSL perl-libwww-perl python27 python36 python39 -
- Make sure a minimal system is installed.
dnf distrosync -y
dnf -y groupupdate "Core" "Minimal Install"
- Install NIS from previously downloaded Fedora38 packages. They decided none needs these anymore :)
dnf install /opt/yp/nss_nis-3.1-13.fc38.x86_64.rpm \
/opt/yp/ypbind-2.7.2-10.fc38.x86_64.rpm \
/opt/yp/yp-tools-4.2.3-14.fc38.x86_64.rpm -y
echo "domain <DOMAIN> server <NIS SERVER IP>" >> /etc/yp.conf
systemctl enable ypbind.service && systemctl start ypbind.service
- Make sure the machine sets its hostname from DHCP/DNS/..
rm -f /etc/hostname && systemctl restart NetworkManager
- Remove their firewall. (These are all machines on an internal network.)
systemctl disable firewalld && systemctl stop firewalld && systemctl mask firewalld
- Remove the subscription manager they forgot to remove from Centos.
dnf remove subscription-manager -y
- Install any packages removed in the upgrade.
dnf install python3-root -y
- Reboot and enjoy Centos9.