Upgrading a Linux distribution to a new major version can be a significant undertaking. It involves navigating potential compatibility issues, managing package changes, and ensuring a smooth transition while preserving existing configurations and data. In the world of Linux, two prominent tools serve this crucial purpose, each tailored to a different ecosystem: elevate and do-release-upgrade. While both aim to facilitate in-place operating system upgrades, they cater to distinct distribution families and employ different underlying mechanisms.
do-release-upgrade: The Ubuntu/Debian Standard
For users of Ubuntu and its derivatives, do-release-upgrade is the familiar and officially recommended command-line utility for performing major version upgrades. Developed as part of the update-manager-core package, it provides a structured and guided process for transitioning between Ubuntu releases.
do-release-upgrade works by first checking for a new release and then updating the system’s package sources (/etc/apt/sources.list and sources in /etc/apt/sources.list.d) to point to the repositories of the target release. It performs a series of checks to identify potential conflicts, deprecated packages, and necessary changes. During the upgrade process, it handles the download and installation of new package versions, the removal of obsolete ones, and the intelligent management of changing dependencies. For server upgrades, particularly over SSH, do-release-upgrade is designed to be robust, even offering to start an additional SSH daemon on a different port to mitigate connectivity issues during the process.
The process typically involves:
- Checking for the availability of a new release.
- Updating package lists and performing initial checks.
- Downloading necessary package files for the new release.
- Installing the upgraded packages and handling configuration file changes (often prompting the user for input).
- Removing obsolete packages.
- A final reboot into the new operating system version.
do-release-upgrade is deeply integrated with the Debian package management system (apt) and the Ubuntu release cycle, making it the go-to tool for reliable in-place upgrades within that family of distributions.
ELevate: The RHEL Derivatives Standard
In the realm of RHEL-based distributions, such as CentOS (before its shift to Stream), AlmaLinux, Rocky Linux, and Oracle Linux, major version upgrades have historically presented more significant challenges. ELevate emerges as a community-driven project specifically designed to address this need, enabling in-place upgrades between major versions of these RHEL derivatives.
ELevate is built upon the leapp framework, a powerful upgrade utility developed by Red Hat. leapp operates by performing a pre-upgrade analysis of the system to identify potential issues and then executing a series of “actors” that handle the actual upgrade process. ELevate augments leapp with a crucial component: a data library (leapp-data) containing the necessary metadata and rules to facilitate upgrades between specific RHEL derivative versions (e.g., CentOS 7 to AlmaLinux 8, AlmaLinux 8 to 9).
The ELevate process, leveraging leapp, typically involves:
- Installing the leapp framework and the relevant elevate-release and leapp-data packages for the desired upgrade path.
- Running a pre-upgrade check (leapp preupgrade) to generate a report detailing potential blockers and necessary manual interventions.
- Addressing any issues identified in the pre-upgrade report.
- Initiating the upgrade process (leapp upgrade), which often involves a reboot into a special environment to perform the core package migration.
- Completing the upgrade and rebooting into the new system.
ELevate aims to provide a more streamlined and supported path for users migrating from older, often end-of-life, RHEL-based systems to newer, supported versions, even across different distributions within the RHEL family.
Key Differences and Comparison
The fundamental difference between ELevate and do-release-upgrade lies in their target audience and the ecosystems they serve:
- Target Distributions: do-release-upgrade is specifically for Ubuntu and Debian-based systems, while ELevate is designed for RHEL and its derivatives.
- Underlying Technology: do-release-upgrade is a purpose-built tool integrated with the APT package manager. ELevate is a project built on the leapp framework, extended with specific data for RHEL derivative upgrades.
- Primary Use Case: do-release-upgrade is the standard, officially supported method for sequential release upgrades in Ubuntu. ELevate addresses the challenge of upgrading between major versions, often across different distributions within the RHEL family, particularly relevant for migrating from CentOS 7.
- Flexibility (within their domain): ELevate, through its leapp foundation and data modules, offers flexibility in supporting various RHEL-based migration paths. do-release-upgrade is primarily focused on the official Ubuntu release upgrade paths.
By understanding the distinct purposes of these tools, you can select the one best suited for your Linux upgrade requirements. Whether you need the enterprise-level rigor of Elevate or the simplicity of do-release-upgrade, both tools bring reliability and efficiency to the process of operating system upgrades.
Brodie Huerta
I like the efforts you have put in this, regards for all the great content.