Have you been waiting for this? At least, I had been. I’m not a big fan of uninstalling the entire OS to install latest version, but I had no option until CentOS 7 was released – it means, CentOS 7 comes with an in-place upgrade feature that allows you to upgrade from CentOS 6.x to 7 without uninstalling/formatting the entire OS. How cool is that?
We’ll use official method to upgrade from CentOS 6.x to 7.
Steps Involved:
- You need to have ‘root’ privileges
- Scan your OS with Preupgrade Assistant Tool.
- Import CentOS 7 GPG Key
- Upgrade using RedHat Upgrade Tool
Disclaimer: Although we are going to follow official upgradation method, there are chances that the upgrade might fail. There are plenty of reasons - this method is still not matured enough to handle packages that were not installed from official repositories. For instance, if you had installed packages from EPEL repository or any other third party repos, then those packages might have problems. It's advised to try upgradation procedure on a freshly installed CentOS 6.x. Follow this tutorial at your own risk and Techglimpse or the author is not responsible if the process didn't work for you.
Scan OS using Preupgrade Assistant Tool
Install ‘Preupgrade Assistant Tool’
- Create a repo file
- $vim /etc/yum.repos.d/upgradetool.repo
- Copy and paste the below lines in upgradetool.repo
[upg] name=CentOS-$releasever - Upgrade Tool baseurl=http://dev.centos.org/centos/6/upg/x86_64/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
- Install Preupgrade Assistant Tool
#yum install redhat-upgrade-tool preupgrade-assistant-contents
Scan using preupg
#preupg
Note : In case if you get an error while executing preupg, then you need to check the version of Python. Click here to learn more about the error.
Preupgrade Assistant Tool will scan the entire operating system and creates report of various packages and its upgrade status.
Sample output:
#preupg :::::::::::::::::::::::::::::::::::::::::::: |device-mapper-multipath configuration compatibility check |fixed | |Configuration Files to Review |needs_inspection | |File Lists for Manual Migration |needs_inspection | |Obsoleted rpms |needs_inspection | |Binary rebuilds |needs_inspection | |Python 2.7.5 |needs_inspection | |Check for usage of dangerous range of UID/GIDs |needs_inspection | |Packages not signed by CentOS |needs_action | |Removed rpms |needs_action | |General |needs_action | |Sonamebumped libs |needs_action | |Content for enabling and disabling services based on CentOS 6 system |needs_action | |User modification in /etc/rc.local and /etc/rc.d/rc.local |needs_action | |cgroups configuration compatibility check |needs_action | -------------------------------------------------------------------------------- ------------------------------- Tarball with results is stored here /root/preupgrade-results/preupg_results-1512 15073258.tar.gz . The latest assessment is stored in directory /root/preupgrade . Summary information: We found some potential in-place upgrade risks. Read the file /root/preupgrade/result.html for more details. Upload results to UI by command: e.g. preupg -u http://127.0.0.1:8099/submit/ -r /root/preupgrade-results/preupg_results-*.tar.gz .
Note: Read the preupgrade results carefully and understand the complications before starting the upgradation process.
Import CentOS GPG Keys
#rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7
Note: You might want to learn more about YUM GPG Keys.
Upgrade from CentOS 6.x to 7 using redhat-upgrade-tool-cli
#/usr/bin/redhat-upgrade-tool-cli --network 7 --instrepo=http://mirror.centos.org/centos/7/os/x86_64
Sample output:
:::::::::::::::::::::::::::::::::::: INPLACERISK: MEDIUM: having one of [nss elfutils-libs audit-libs gdisk libX11-common ca-certificates glusterfs kpartx openscap pixman libxcb libX11 firefox tzdata nspr elfutils-libelf openldap glusterfs-api device-mapper-multipath libnl3 mdadm glusterfs-libs nss-sysinit nss-tools spice-server device-mapper- multipath-libs netcf-libs libdrm libpciaccess audit-libs-python gtk2 audit nss-util] package installed breaks upgrade INPLACERISK: MEDIUM: a number of default configuation settings have changed in CentOS7. Users should verify that their devices are still optimally configured INPLACERISK: MEDIUM: We detected some soname bumps in the libraries installed on the system. This may break the functionality of some of your 3rd party applications. They may need rebuild. Please check their requirements. INPLACERISK: MEDIUM: We detected some .so libraries installed on the system were removed between CentOS 6 and CentOS 7. This may break the functionality of some of your 3rd party applications. ::::::::::::::::::::::::::::::::: INPLACERISK: SLIGHT: Some binaries untracked by RPM were discovered on the system and may need rebuild after upgrade. INPLACERISK: SLIGHT: Some scripts untracked by RPM were discovered on the system and may not work properly after upgrade. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/_markerlib is not owned by any RPM package. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/argparse-1.4.0.dist-info is not owned by any RPM package. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/gluster is not owned by any RPM package. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/ioprocess is owned by an RPM package that was not signed by CentOS. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/mom is owned by an RPM package that was not signed by CentOS. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/pip is not owned by any RPM package. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/pip-7.1.2.dist-info is not owned by any RPM package. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/pkg_resources is not owned by any RPM package. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/setuptools-18.3.2.dist-info is not owned by any RPM package. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/vdsm is owned by an RPM package that was not signed by CentOS. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/virtualenv_support is owned by an RPM package that was not signed by CentOS. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/wheel is not owned by any RPM package. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/wheel-0.26.0.dist-info is not owned by any RPM package. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/yajsonrpc is owned by an RPM package that was not signed by CentOS. INPLACERISK: SLIGHT: /usr/lib/python2.6/site-packages/zombiereaper is not owned by any RPM package. INPLACERISK: SLIGHT: /usr/lib64/python2.6/site-packages/cpopen is not owned by any RPM package. INPLACERISK: SLIGHT: /usr/lib64/python2.6/site-packages/gtk-2.0 is owned by an RPM package that was not signed by CentOS. INPLACERISK: SLIGHT: /usr/lib64/python2.6/site-packages/pycrypto-2.6.1-py2.6.egg-info is not owned by any RPM package. INPLACERISK: NONE: Custom selinux configuration has been saved and it will be restored by a postupgrade script after the system upgrade. ::::::::::::::::::::::::::::::::::::::::::::::: Y ::::::::::::::::::::::::::::::::::::::::::::::::::: (651/662): xz-libs-5.1.2-12alpha.el7.i686.rpm | 107 kB 00:00 (652/662): xz-libs-5.1.2-12alpha.el7.x86_64.rpm | 102 kB 00:00 (653/662): xz-lzma-compat-5.1.2-12alpha.el7.x86_64.rpm | 18 kB 00:00 (654/662): yajl-2.0.4-4.el7.x86_64.rpm | 39 kB 00:00 (655/662): yum-3.4.3-132.el7.centos.0.1.noarch.rpm | 1.2 MB 00:01 (656/662): yum-metadata-parser-1.1.4-10.el7.x86_64.rpm | 28 kB 00:00 (657/662): yum-plugin-fastestmirror-1.1.31-34.el7.noarch | 30 kB 00:00 (658/662): yum-utils-1.1.31-34.el7.noarch.rpm | 113 kB 00:00 (659/662): zip-3.0-10.el7.x86_64.rpm | 260 kB 00:00 (660/662): zlib-1.2.7-15.el7.i686.rpm | 90 kB 00:00 (661/662): zlib-1.2.7-15.el7.x86_64.rpm | 89 kB 00:00 (662/662): zlib-devel-1.2.7-15.el7.x86_64.rpm | 50 kB 00:00 testing upgrade transaction rpm transaction 100% [=========================================================] rpm install 100% [=============================================================] setting up system for upgrade Finished. Reboot to start upgrade.
Note: The above step will take sometime and your system will reboot couple of times to complete the upgrade. During the process, the boot images are retrieved and necessary packages are downloaded before the installation can start after the reboot.
You can also use ‘centos-upgrade-tool’.
After the reboot:
Starting System Upgrade... [ 28.890048] upgrade[1461]: starting upgrade hook [ 28.963833] upgrade[1461]: preparing for upgrade... [ 29.003036] upgrade[1461]: found 662 packages to install [ 29.004901] upgrade[1461]: building RPM transaction, one moment... [ 40.646364] upgrade[1461]: 662 packages to install, 461 to erase [ 40.648261] upgrade[1461]: checking RPM transaction... [ 41.609272] upgrade[1461]: non-fatal problems with RPM transaction: [ 41.659882] upgrade[1461]: libpython2.6.so.1.0()(64bit) is needed by (installed) python-cheetah-2.4.1-1.el6.x86_64 [ 41.662478] upgrade[1461]: libpython2.6.so.1.0()(64bit) is needed by (installed) python-crypto-2.0.1-22.el6.x86_64 [ 41.664632] upgrade[1461]: libpython2.6.so.1.0()(64bit) is needed by (installed) python-iwlib-0.1-1.2.el6.x86_64 [ 41.666577] upgrade[1461]: libpython2.6.so.1.0()(64bit) is needed by (installed) python-cpopen-1.4-0.el6.x86_64 :::::::::::::::::::::::::::::::::::::::
Another reboot and your system is now upgraded successfully to CentOS 7.