რადგანაც და რატომაც ძალიან არა მგონია, სადმე რამე ეწეროს ამის შესახებ, ინგლისურად დავწერ, რომ სხვებმაც გაიგონ.
Hello guys. Decided to share with you quite working and demanding procedure of inplace upgrade of RHEL/CentOS 7.6-7.7 system to 8.0.1.
As it is unsupported by any of our vendors, we're going on our risk.
Things to consider before upgrade:
1) Tt is unsupported by RH, neither by CentOS.
2) Take full backup/take snapshot of VM/BM
3) I made it to work with EPEL/REMI/NGINX/MariaDB repos, but I guess it will not work (as per official RHEL upgrade tool, leapp) with any 3rd party repos installed (It worked flawlessly after a bit of modifications, though)
4) use this manual at your risk.
5) there is no way back
6) have fun
Please, read full text carefully before asking questions or following procedure step-by-step:
0) take backup of EVERYTHING (/etc, etc)
1) Download full ISO
cd /tmp
curl
http://mirror.centos.ge/8.0.1905/isos/x86_...4-1905-dvd1.iso -O
2) mount it somewhere
mount /tmp/CentOS-8-x86_64-1905-dvd1.iso /mnt
3) Copy all rpms at one location.
mkdir /media/1
cp /mnt/BaseOS/Packages/*rpm /media/1
cp /mnt/AppStream/Packages/*rpm /media/1
4) umount ISO
umount /mnt
5) ***WARNING, INVASIVE PART***
remove python-libs package from system through rpm.
if you're on 7.6, there are not many packages to remove, but it depends on your system/needs, I guess.
in my case command to remove "unneeded packages" was:
rpm -e python-libs python pyliblzma pygpgme pyxattr rpm-python policycoreutils-python systemd-python fail2ban-server yum tuned python-ndg_httpsclient python2-certbot python2-acme certbot yum-plugin-fastestmirror fail2ban-systemd fail2ban fail2ban-firewalld fail2ban-sendmail firewalld python2-josepy python2-future python2-parsedatetime systemd-sysv python-chardet python-linux-procfs python-urlgrabber libsemanage-python python-setuptools authconfig gettext python-schedutils grub2-pc grub2-tools-extra grub2-tools grub2-tools-minimal python2-cryptography python-requests python-requests-toolbelt grub2 newt-python yum-metadata-parser python-pycurl python-zope-interface python-cffi pyOpenSSL python2-psutil python-perf python-zope-component audit-libs-python python-firewall python-urllib3
you might need to specify additional package names/remove some package names from list. again, depends on system.
congratulations, you got system without python now (my long-time dream)
6) install grub, dnf, NetworkManager kernel etc.
Now interesting part. installation command for me (on 7.7) was this:
rpm -Uvh NetworkManager-1.14.0-14.el8.x86_64.rpm rpm-4.14.2-9.el8.x86_64.rpm dnf-4.0.9.2-5.el8.noarch.rpm grub2-common-2.02-66.el8.noarch.rpm grubby-8.40-34.el8.x86_64.rpm kernel-4.18.0-80.el8.x86_64.rpm kernel-core-4.18.0-80.el8.x86_64.rpm kernel-modules-4.18.0-80.el8.x86_64.rpm kernel-modules-extra-4.18.0-80.el8.x86_64.rpm rpm-libs-4.14.2-9.el8.x86_64.rpm rpm-build-libs-4.14.2-9.el8.x86_64.rpm lua-5.3.4-10.el8.x86_64.rpm lua-libs-5.3.4-10.el8.x86_64.rpm ncurses-6.1-7.20180224.el8.x86_64.rpm ncurses-libs-6.1-7.20180224.el8.x86_64.rpm ncurses-base-6.1-7.20180224.el8.noarch.rpm iprutils-2.4.16.1-2.el8.x86_64.rpm kernel-tools-4.18.0-80.el8.x86_64.rpm kernel-tools-libs-4.18.0-80.el8.x86_64.rpm parted-3.2-36.el8.x86_64.rpm openssh-7.8p1-4.el8.x86_64.rpm openssh-clients-7.8p1-4.el8.x86_64.rpm openssh-server-7.8p1-4.el8.x86_64.rpm libxcrypt-4.1.1-4.el8.x86_64.rpm crypto-policies-20181217-6.git9a35207.el8.noarch.rpm glibc-2.28-42.el8.1.x86_64.rpm glibc-common-2.28-42.el8.1.x86_64.rpm glibc-langpack-en-2.28-42.el8.1.x86_64.rpm hostname-3.20-6.el8.x86_64.rpm openssl-1.1.1-8.el8.x86_64.rpm openssl-libs-1.1.1-8.el8.x86_64.rpm open-vm-tools-10.3.0-2.el8.x86_64.rpm libtirpc-1.1.4-3.el8.x86_64.rpm krb5-libs-1.16.1-22.el8.x86_64.rpm libssh2-1.8.0-7.module_el8.0.0+44+94c1b039.1.x86_64.rpm libicu-60.2-7.el8.x86_64.rpm icu-60.2-7.el8.x86_64.rpm libstdc++-8.2.1-3.5.el8.x86_64.rpm wpa_supplicant-2.7-1.el8.x86_64.rpm NetworkManager-libnm-1.14.0-14.el8.x86_64.rpm glib2-2.56.4-1.el8.x86_64.rpm gnutls-3.6.5-2.el8.x86_64.rpm readline-7.0-10.el8.x86_64.rpm NetworkManager-tui-1.14.0-14.el8.x86_64.rpm NetworkManager-team-1.14.0-14.el8.x86_64.rpm libarchive-3.3.2-3.el8.x86_64.rpm python3-dnf-4.0.9.2-5.el8.noarch.rpm grub2-common-2.02-66.el8.noarch.rpm grub2-tools-2.02-66.el8.x86_64.rpm grub2-tools-minimal-2.02-66.el8.x86_64.rpm xz-5.2.4-3.el8.x86_64.rpm xz-libs-5.2.4-3.el8.x86_64.rpm ima-evm-utils-1.1-4.el8.x86_64.rpm sqlite-3.26.0-3.el8.x86_64.rpm sqlite-libs-3.26.0-3.el8.x86_64.rpm bc-1.07.1-5.el8.x86_64.rpm info-6.5-4.el8.x86_64.rpm libedit-3.1-23.20170329cvs.el8.x86_64.rpm less-530-1.el8.x86_64.rpm grep-3.1-6.el8.x86_64.rpm bash-4.4.19-7.el8.x86_64.rpm util-linux-2.32.1-8.el8.x86_64.rpm procps-ng-3.3.15-1.el8.x86_64.rpm xfsprogs-4.19.0-2.el8.x86_64.rpm platform-python-3.6.8-1.el8.0.1.x86_64.rpm platform-python-setuptools-39.2.0-4.el8.noarch.rpm platform-python-pip-9.0.3-13.el8.noarch.rpm python3-libs-3.6.8-1.el8.0.1.x86_64.rpm initscr1pts-10.00.1-1.el8.x86_64.rpm libmount-2.32.1-8.el8.x86_64.rpm libsmartcols-2.32.1-8.el8.x86_64.rpm libfdisk-2.32.1-8.el8.x86_64.rpm libblkid-2.32.1-8.el8.x86_64.rpm libuuid-2.32.1-8.el8.x86_64.rpm gettext-0.19.8.1-14.el8.x86_64.rpm gettext-libs-0.19.8.1-14.el8.x86_64.rpm python3-rpm-4.14.2-9.el8.x86_64.rpm python3-libdnf-0.22.5-4.el8.x86_64.rpm libmodulemd-2.0.0-5.el8.x86_64.rpm libmodulemd1-1.8.0-5.el8.x86_64.rpm python3-libcomps-0.1.8-13.el8.x86_64.rpm libcomps-0.1.8-13.el8.x86_64.rpm libyaml-0.1.7-5.el8.x86_64.rpm libdnf-0.22.5-4.el8.x86_64.rpm libsolv-0.6.35-6.el8.x86_64.rpm libunistring-0.9.9-3.el8.x86_64.rpm librepo-1.9.2-1.el8.x86_64.rpm json-c-0.13.1-0.2.el8.x86_64.rpm dnf-data-4.0.9.2-5.el8.noarch.rpm nettle-3.4.1-1.el8.x86_64.rpm libidn2-2.0.5-1.el8.x86_64.rpm libreport-filesystem-2.9.5-6.el8.x86_64.rpm libnsl-2.28-42.el8.1.x86_64.rpm cryptsetup-libs-2.0.6-1.el8.x86_64.rpm cryptsetup-2.0.6-1.el8.x86_64.rpm libnsl2-1.2.0-2.20180605git4a062cf.el8.x86_64.rpm gdbm-1.18-1.el8.x86_64.rpm gdbm-libs-1.18-1.el8.x86_64.rpm python3-iniparse-0.4-31.el8.noarch.rpm python3-hawkey-0.22.5-4.el8.x86_64.rpm python3-gpg-1.10.0-6.el8.0.1.x86_64.rpm gnupg2-2.2.9-1.el8.x86_64.rpm libusb-0.1.5-12.el8.x86_64.rpm libusbx-1.0.22-1.el8.x86_64.rpm python3-six-1.11.0-8.el8.noarch.rpm gpgme-1.10.0-6.el8.0.1.x86_64.rpm man-db-2.7.6.1-17.el8.x86_64.rpm libgpg-error-1.31-1.el8.x86_64.rpm libgcrypt-1.8.3-2.el8.x86_64.rpm sudo-1.8.25p1-4.el8.x86_64.rpm systemd-libs-239-13.el8.x86_64.rpm systemd-239-13.el8.x86_64.rpm libxslt-1.1.32-3.el8.x86_64.rpm systemd-udev-239-13.el8.x86_64.rpm systemd-pam-239-13.el8.x86_64.rpm pcre2-10.32-1.el8.x86_64.rpm dhcp-common-4.3.6-30.el8.noarch.rpm dhcp-libs-4.3.6-30.el8.x86_64.rpm dhcp-client-4.3.6-30.el8.x86_64.rpm grub2-pc-modules-2.02-66.el8.noarch.rpm ipcalc-0.2.4-3.el8.x86_64.rpm libksba-1.3.5-7.el8.x86_64.rpm pinentry-1.1.0-2.el8.x86_64.rpm libsecret-0.18.6-1.el8.x86_64.rpm bind-9.11.4-16.P2.el8.x86_64.rpm bind-license-9.11.4-16.P2.el8.noarch.rpm bind-chroot-9.11.4-16.P2.el8.x86_64.rpm bind-libs-9.11.4-16.P2.el8.x86_64.rpm bind-libs-lite-9.11.4-16.P2.el8.x86_64.rpm bind-utils-9.11.4-16.P2.el8.x86_64.rpm python3-bind-9.11.4-16.P2.el8.noarch.rpm bind-export-libs-9.11.4-16.P2.el8.x86_64.rpm python3-ply-3.9-7.el8.noarch.rpm npth-1.5-4.el8.x86_64.rpm fipscheck-1.5.0-4.el8.x86_64.rpm fipscheck-lib-1.5.0-4.el8.x86_64.rpm coreutils-8.30-6.el8.x86_64.rpm coreutils-common-8.30-6.el8.x86_64.rpm iputils-20180629-1.el8.x86_64.rpm centos-release-8.0-0.1905.0.9.el8.x86_64.rpm compat-openssl10-1.0.2o-3.el8.x86_64.rpm --oldpackage --nodeps
you might NOT need --oldpackage option on 7.6. but 7.7 has couple of packages, which are newer than ones, distributed with 8.0
but please, before specifying --nodeps and/or --oldpackage, take a close look on dependencies before ignoring them.
---- POST INSTALL TASKS -----
1) IF you got selinux on, do "touch /.autorelabel" . (be aware, that it will relabel all filesystems and if you didnt take care of SElinux policy/contexts being accessible after relabel, its a VERY good time to do it)
2) check if you got nm_controlled=no in ifcfg-* files and if yes, remove them. RHEL8 makes legacy network startup deprecated. also do not forget to enable NetworkManager service.
3) REBUILD RPM DB (DO NOT FORGET THIS PART)
rpm --rebuilddb
(rpm has been upgraded, so database needs to be upgraded too. else you will get stuck dnf all the time)
4) IF you're using mariadb/nginx repos, change "7" to "8" in /etc/yum.repos.d/*repo files:
(e.g. baseurl=http://nginx.org/packages/centos/8/$basearch/ for nginx)
5) update repo files for EPEL and REMI
rpm -e epel-release remi-release
dnf localinstall
https://rpms.remirepo.net/enterprise/remi-release-8.rpmLet's also select correct php version...
dnf module reset php
dn module enable php:remi-7.2
6) IF you're using official mariadb repo and do not want to use RHEL/CentOS provided ones, please, add these two lines at the end of repo definitions at:
CentOS-AppStream.repo and CentOS-Base.repo
exclude=mariadb*
exclude=mysql*
Use this ONLY if you're using mariadb repo's.
7) try to do actual update..
dnf update
You will be presented quite a big (9 lines in my case) list, which is preventing system to be completely updated to version 8 we're aiming at.
(in my case I had to remove perl and perl-libs packages with --nodeps options, dnf installed them anyway. ivtv-firmware has to be removed too)
also, if you're using mariadb repo with nagios monitoring, you have to remove nagios-plugins-mysql package, since its not linked to correct libmysqlclient_r.so library.
After solving all problems (second one was gd-last and onuguruma5 packages from remi, which also were removed with --nodeps), wait for "dnf update " command to finish
8) regenerating grub config and reinstalling it (use your device, but almost all the time its /dev/sda)
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-install /dev/sda
9) IF you were using fail2ban before, install/enable it back, properly (I'm not using firewalld)
dnf install fail2ban fail2ban-systemd
systemctl mask firewalld
systemctl enable fail2ban
10) reboot
Welcome to RHEL/CentOS 8
P.S. its 3:30AM, so I'm pretty sure I missed more than I wrote here. Sorry about that. If there will be any interest, I'll be updating text eventually.
BR..
This post has been edited by NorwayFun on 27 Oct 2019, 10:26
Remember children. With great power there comes great responsibility.