• Indonesian
  • English
  • Fix AlmaLinux ELevate Upgrade Error: Complete Guide 2026

    Kecepatan:
    ⏱ 12 min read

    How to Fix AlmaLinux ELevate Upgrade Error: A Complete Step-by-Step Guide

    Skip the fluff — if you’re reading this, your ELevate upgrade either failed already, or you’re smart enough to check before you leap. Either way, you’re in the right place: this is how to fix AlmaLinux ELevate upgrade errors for good. I’ve spent way too many nights staring at half-upgraded servers that died mid-flight, and the pattern is almost always the same. So here’s the deal: I’ll give you the fix list, the exact commands, and the gotchas nobody mentions up front.

    Quick reality check. ELevate is AlmaLinux’s in-place major upgrade tool — the thing you use to go from AlmaLinux 8 to 9, or to drag a CentOS 7 box into the modern era. Under the hood, it runs the Red Hat leapp framework with official upgrade data. It works. But here’s the part nobody says out loud: it’s a house renovation that happens while you’re still living in the house. One wrong package, one missing answer, and you’re locked out of the bathroom — except the bathroom is your production server.

    Difficulty: Intermediate
    Last Updated: August 2026
    Tested On: AlmaLinux 8.10 -> 9.4 and CentOS 7.9 -> AlmaLinux 8.10 (ELevate 0.8.x, leapp 0.16.x)

    Let me be real about why these upgrades fail. It’s rarely the tool. It’s almost always the environment. Production servers are dirty. They carry third-party repos like EPEL and Remi that got enabled five years ago and forgotten, custom kernels someone compiled once and never removed, and packages installed by hand from some random URL. leapp checks all of this during the preupgrade phase and writes every single problem into a report. The kicker? Most admins skip the report and jump straight into the upgrade. That’s mistake number one.

    Mistake number two is skipping the backup. I know — you have a snapshot somewhere. But “somewhere” isn’t the same as “verified and recoverable.” When an upgrade dies at sixty percent, the RPM database is in a weird state, and a snapshot from last week might not cut it if you’ve changed configs since. Make the snapshot, test the restore, and only then touch leapp. That’s the difference between a thirty-minute fix and a weekend of panic.

    And the third thing — the one that trips up even experienced admins — is the answer file. leapp asks a handful of questions during the upgrade, VDO confirmation, authselect checks, that kind of thing. If you don’t answer them in advance, the upgrade stops dead with an inhibitor, and the error message gives you zero hints about how trivial the fix is. I’ll cover that below. Alright, let’s get into the actual steps.

    Why AlmaLinux ELevate Upgrade Fails: The Three Real Reasons

    Stripped down, every failure I’ve debugged comes down to one of three things: an unread precheck report, a missing answer, or a dirty environment. The environment one is the most common — old repos, blocked packages, and full disks. The good news is all three are fixable before leapp even starts, which is exactly what the steps below do. So instead of treating the symptom, we fix the cause, once, in order.

    What a Dying Upgrade Actually Looks Like

    For the record, here’s what a failed upgrade looks like in /var/log/leapp/leapp-upgrade.log. Notice the progression: warnings first, then the RPM transaction, then the crash.

    2026-08-02 02:11:07.123 INFO Preparing system for upgrade
    2026-08-02 02:11:09.487 WARNING One or more repositories are disabled
    2026-08-02 02:11:14.002 WARNING Package zram-generator is not supported in target OS
    2026-08-02 02:11:22.877 INFO Executing RPM transaction (phase 1/2)
    2026-08-02 02:11:28.331 ERROR Transaction check error:
    2026-08-02 02:11:28.331 ERROR file /usr/lib/modules-load.d/zram.conf conflicts between
    2026-08-02 02:11:28.332 ERROR attempted installs of zram-generator and kmod-zbud
    2026-08-02 02:11:28.910 ERROR Upgrade cannot continue, please check the report

    Lines one through three are the symptom: leapp flags a package it knows won’t survive the transition. The middle lines are the pattern: the RPM transaction starts and immediately hits a file conflict. The last line is the root cause: zram-generator and kmod-zbud are fighting over the same file. Fix the package list first and this whole log never happens.

    The Non-Negotiable Prep (Do This First)

    SECURITY WARNING: Back Up Before You Continue

    Before running anything that changes the system:

    1. Take a full snapshot or backup of the server (VPS image or full rsync).
    2. Verify the backup actually restores — the file existing isn’t enough.
    3. Write down the current OS version and key configuration.

    A major upgrade that fails mid-way can cause permanent data loss without a backup. A VPS panel snapshot is usually the easiest, but make sure your latest data is covered.

    Take the snapshot, then verify it. Don’t trust the “snapshot created” message — open the list and confirm it’s there, and if you have a spare box, test the restore. Ten minutes now saves you a very bad weekend.

    Step 1 — Update Everything, Then Clean Up

    Old boxes carry hundreds of outdated packages, and leapp needs a clean baseline. Bring everything up to date and clear the cache.

    cat /etc/redhat-release
    uname -r
    dnf update -y
    dnf clean all

    On CentOS 7, swap dnf for yum. And make sure you’re on the latest stock kernel — not a custom one. ELevate loads its own modules during the reboot phase, and a custom kernel is the fastest way to a boot that never finishes.

    Step 2 — Tame Your Repositories

    List what’s enabled, then disable anything that isn’t core OS repos during the upgrade. You can flip them back on after.

    dnf repolist
    dnf config-manager --set-disabled epel

    EPEL, Remi, and friends hold packages that conflict with the target OS. You don’t need to remove packages yet — just disable the repos. The precheck will tell you exactly which packages have to go. If you spot a repo nobody remembers enabling, disable it too. When in doubt, it goes.

    Step 3 — Install ELevate and leapp

    Install from the official repo. The commands differ slightly between AlmaLinux 8 and CentOS 7:

    # AlmaLinux 8
    dnf install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm -E %rhel).noarch.rpm
    dnf install -y leapp-upgrade leapp-data-almalinux
    # CentOS 7
    yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el$(rpm -E %rhel).noarch.rpm
    yum install -y leapp-upgrade leapp-data-almalinux

    Confirm both packages landed:

    rpm -qa | grep -Ei "leapp|elevate"

    Step 4 — Run the Precheck (and Actually Read It)

    leapp preupgrade does zero damage. It only inspects the system and writes a report. Run it, grab a coffee, and wait.

    leapp preupgrade

    Then open the report:

    cat /var/log/leapp/leapp-report.txt

    Here’s a realistic sample from a production box someone ignored, then paid for:

    [INHIBITOR] Some installed RPMs are blocked
    Summary: The following RPMs are known to be problematic:
    - kmod-zbud-3.0-1.el8.x86_64
    - zram-generator-0.1.4-3.el8.x86_64
    These packages are not supported in the target OS and must be removed.
    Remediation: [command]dnf remove kmod-zbud zram-generator[/command]
    Risk Factor: high

    [INHIBITOR] Required space for the ''' directory is not sufficient
    Summary: A required space of about 525 MB is missing on the ''' filesystem.
    Remediation: [command]dnf clean all && rm -rf /var/cache/dnf/*[/command]
    Risk Factor: high

    [CONF] Custom SSH configuration file was detected
    Summary: The system is configured with a custom sshd_config.
    Remediation: Review and manually apply necessary changes after the upgrade.
    Risk Factor: low

    Read it top to bottom. [INHIBITOR] means the upgrade will stop unless you fix it. The “Summary” line explains the problem, and “Remediation” literally hands you the command. [CONF] and [WARN] lines are warnings — they won’t stop the upgrade, but read them anyway. Need more detail? /var/log/leapp/leapp-preupgrade.json has the full dump.

    Don’t skip this. Nine out of ten “my ELevate failed” tickets I see trace straight back to an unread report.

    Step 5 — Clear Every Inhibitor

    Remove blocked packages

    When the report names packages, confirm they’re the ones actually installed before you remove anything:

    rpm -qa | grep -Ei "zbud|zram"

    If the output only shows packages you don’t use, remove them:

    dnf remove kmod-zbud zram-generator

    If you’re not sure what a package does, don’t guess. Check with rpm -qi, ask your team, and only then remove it.

    Answer the questions

    VDO and a few other checks need explicit confirmation before leapp will proceed:

    leapp answer --add --section check_vdo.confirm=True

    Or edit /var/log/leapp/answerfile directly and flip the defaults to True. Just make sure it’s answered before you run the upgrade, or it’ll stop cold in the middle of the transaction.

    Free up disk space

    Check where you stand first:

    df -h / /usr /var /boot

    Then verify the cache directory before emptying it, and trim the logs:

    ls /var/cache/dnf/
    dnf clean all
    rm -rf /var/cache/dnf/*
    journalctl --vacuum-size=200M

    Re-check with df -h. Still tight? Resize the partition or move data before you proceed.

    Re-run the precheck

    Fix everything the report flagged, then run preupgrade once more until it comes back clean:

    leapp preupgrade

    No new inhibitors? Good. You’re cleared to proceed.

    Step 6 — Run the Upgrade

    This is the real deal. leapp upgrade stages everything and then asks for a reboot. The actual upgrade finishes during that reboot, and yes — your SSH session will drop. That’s normal.

    leapp upgrade

    Run it inside tmux or screen so a flaky connection doesn’t kill the log. And don’t — I repeat, don’t — reboot manually while it’s running. Let leapp own the reboot.

    Fix AlmaLinux ELevate upgrade error step by step

    Step 7 — Reboot and Verify

    Once leapp says it’s ready, reboot:

    reboot

    When it’s back, verify:

    cat /etc/redhat-release
    cat /etc/os-release
    uname -r

    Seeing AlmaLinux 9 with a new kernel? Then re-enable the repos you disabled and do a final sweep:

    dnf config-manager --set-enabled epel
    dnf update -y

    The Errors You’ll Actually See

    Here’s the quick-reference table for the errors that show up most often in the wild. Keep it handy — this is what ninety percent of tickets end up being:

    Error Message Likely Cause Fix
    Could not retrieve the upgrade data for 8.9 to 9.4 Elevation repo data unreadable or repo.almalinux.org unreachable Check internet access and /etc/leapp/files/leapp_upgrade_repositories.repo
    Required space for the ”’ directory is not sufficient Root partition too full Clear caches and logs, or resize the partition
    Some installed RPMs are blocked Packages not supported on the target OS Remove the packages listed in the report remediation
    Transaction check error RPM conflicts between old and new packages Disable third-party repos and remove conflicting packages
    Detected VDO feature (needs confirmation) Required answer not given Set the answer file with leapp answer
    You need to be root leapp run as a normal user Switch to root and retry
    Unable to load kernel module Kernel too old or custom Update to the latest stock kernel first
    Server does not come back after reboot Upgrade failed during the boot phase Use console access, boot the old kernel, then rollback or restore the snapshot

    Pro Tips & Warnings

    • Test on a staging clone first. Always. Production is not your lab.
    • Pick a wide maintenance window. Preparation alone can take 20-60 minutes, plus the reboot.
    • Keep console access (noVNC/KVM) handy from your VPS panel. If SSH dies and the box doesn’t return, that’s your lifeline.
    • Write down the current kernel and OS version before you start, so verification is a quick diff.
    • Never run leapp upgrade twice on a failed state. Re-read the report, fix it, then re-run.

    FAQ

    Q: Do I really need to run leapp preupgrade before leapp upgrade?

    Yes, and it’s not optional. preupgrade does nothing destructive — it just inspects the system and writes the report. Running leapp upgrade without the precheck is how you end up with an inhibitor mid-transaction and no idea where to start.

    Q: Can I run ELevate on a server with a custom or third-party kernel?

    Usually no. A custom kernel is one of the most common inhibitors because leapp can’t load its own modules during the reboot phase. Revert to the stock distro kernel, finish the upgrade, and you can look at custom kernels again after.

    Q: My server didn’t come back after the reboot. What now?

    Open console access from your VPS panel first — don’t rely on SSH. Check the grub menu and try booting the old kernel. If the system won’t boot at all, restore from the snapshot you took before the upgrade. That’s why the snapshot exists.

    Q: How long does the whole upgrade take?

    Preparation takes roughly 20 to 60 minutes depending on package count and connection speed. The reboot phase is a few minutes. Plan a maintenance window where a few minutes of downtime is acceptable.

    Q: Is ELevate safe for production servers?

    It’s widely used and generally stable, but any in-place major upgrade carries risk. The safest workflow is: clone the server to staging, run the upgrade there, verify everything, and only then touch production — with a fresh snapshot in hand.

    Related Reading

    If you’re still preparing the server, or you want to keep an eye on it after the upgrade, these should help:

    Done. That’s the whole flow. Before you run anything, do three things: take the snapshot, run the precheck, and read the report. If you still hit a wall, pull /var/log/leapp/leapp-report.txt and match the line against the table above. It’s almost always something in there. Bookmark this for next time, and test the whole thing in staging first — production isn’t your lab.

    Author: Syslog Solutions — NOC & Server Management Team. We handle 500+ servers daily, from shared hosting to enterprise dedicated infrastructure.