Distro Comparison

Overview

Aspect Arch RHEL/Rocky/Alma Fedora Debian/Ubuntu

Release Model

Rolling

Point release (10yr support)

Point release (13mo)

Point release (LTS: 5yr)

Package Manager

pacman + AUR

dnf (rpm)

dnf (rpm)

apt (deb)

Init System

systemd

systemd

systemd

systemd

Default Kernel

Latest stable

Backported LTS

Near-latest

LTS (Ubuntu)

Primary Use

Desktop, power users

Enterprise, production

Cutting edge, workstation

Servers, stability

SELinux

Manual (not default)

Enabled by default

Enabled by default

Uses AppArmor instead

Firewall

Manual (iptables/nftables)

firewalld

firewalld

ufw/nftables

Release Lifecycle

Arch Linux

  • Model: Rolling release - always latest

  • Support: Continuous (no EOL)

  • Updates: Daily/weekly via pacman -Syu

  • Breaking Changes: Can happen anytime (read arch-announce!)

# Check for news before upgrading
pacman -Syu
# or with yay:
yay -Syu

RHEL/Rocky/Alma

  • Model: Major release every 3-4 years

  • Support: 10 years (Extended: up to 12)

  • Phases: Full Support (5yr) → Maintenance (5yr) → Extended

Version Release Full Support Maintenance End

RHEL 8

May 2019

May 2024

May 2029

RHEL 9

May 2022

May 2027

May 2032

Fedora

  • Model: Point release every ~6 months

  • Support: ~13 months per release (N-2 supported)

  • Upgrades: In-place via dnf system-upgrade

# Check current version
cat /etc/fedora-release

# Upgrade to next version
sudo dnf upgrade --refresh
sudo dnf install dnf-plugin-system-upgrade
sudo dnf system-upgrade download --releasever=40
sudo dnf system-upgrade reboot

Debian/Ubuntu

Distro Release Support LTS

Debian 12 (Bookworm)

June 2023

~3 years

~5 years

Ubuntu 24.04 LTS

April 2024

5 years

10 years (ESM)

Ubuntu 23.10

Oct 2023

9 months

N/A

Package Management Comparison

See Package Managers Reference for detailed commands.

Key Differences

Feature Arch RHEL/Fedora Debian/Ubuntu

Base Format

pkg.tar.zst

RPM

DEB

Repos

Official + AUR

BaseOS, AppStream, EPEL

main, universe, multiverse

Build System

makepkg + PKGBUILD

rpmbuild + spec file

dpkg-buildpackage + debian/

Partial Upgrades

NEVER

Supported

Supported

Lock Files

No

/var/run/dnf.pid

/var/lib/apt/lists/lock

Repository Comparison

Arch

# Official repos in /etc/pacman.conf
[core]
[extra]
[multilib]

# AUR (community) - via yay/paru
yay -S package-from-aur

RHEL/Rocky

# Default repos
dnf repolist

# Enable EPEL (extra packages)
sudo dnf install epel-release

# Enable CRB (CodeReady Builder/PowerTools)
sudo dnf config-manager --set-enabled crb

Fedora

# Default repos
dnf repolist

# Enable RPM Fusion (non-free)
sudo dnf install \
  https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
  https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

Debian/Ubuntu

# /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu/ noble main restricted
deb http://archive.ubuntu.com/ubuntu/ noble universe
deb http://archive.ubuntu.com/ubuntu/ noble multiverse

# Add PPA (Ubuntu)
sudo add-apt-repository ppa:ondrej/php

Service Management

All use systemd. See systemd Deep Dive.

Default Services

Service Arch RHEL Fedora Debian/Ubuntu

Firewall

Manual

firewalld

firewalld

ufw (Ubuntu)

SELinux

Manual

Enforcing

Enforcing

N/A (AppArmor)

Network

systemd-networkd/NetworkManager

NetworkManager

NetworkManager

NetworkManager/netplan

Cron

Manual (cronie)

crond

crond

cron

SSH

Manual (sshd)

sshd

sshd

ssh

Security Comparison

MAC Systems

Distro MAC Default State Config Location

RHEL/Rocky/Fedora

SELinux

Enforcing

/etc/selinux/config

Debian/Ubuntu

AppArmor

Enabled

/etc/apparmor.d/

Arch

Neither (manual)

-

-

Firewall Defaults

  • RHEL/Fedora

  • Arch

  • Debian/Ubuntu

# firewalld (default)
sudo firewall-cmd --list-all
sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload
# nftables (manual install)
sudo pacman -S nftables
sudo systemctl enable --now nftables

# Or firewalld
sudo pacman -S firewalld
sudo systemctl enable --now firewalld
# ufw (Ubuntu, simple)
sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp

# nftables (Debian, advanced)
sudo apt install nftables

Networking

Network Manager Comparison

Distro Default Config Location Commands

Arch

systemd-networkd or NM

/etc/systemd/network/ or nmcli

networkctl / nmcli

RHEL/Fedora

NetworkManager

/etc/NetworkManager/

nmcli, nmtui

Debian

/etc/network/interfaces or NM

/etc/network/

ifup/ifdown or nmcli

Ubuntu

netplan + NetworkManager

/etc/netplan/

netplan apply

Configuration Examples

  • Arch (systemd-networkd)

  • RHEL (nmcli)

  • Ubuntu (netplan)

# /etc/systemd/network/20-wired.network
[Match]
Name=enp*

[Network]
DHCP=yes
nmcli con mod "Wired connection 1" ipv4.addresses 192.168.1.100/24
nmcli con mod "Wired connection 1" ipv4.gateway 192.168.1.1
nmcli con mod "Wired connection 1" ipv4.method manual
nmcli con up "Wired connection 1"
# /etc/netplan/01-network.yaml
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp0s3:
      dhcp4: true

File System Locations

System Directories

Purpose Arch RHEL Debian/Ubuntu

System units

/usr/lib/systemd/system/

/usr/lib/systemd/system/

/lib/systemd/system/

Admin units

/etc/systemd/system/

/etc/systemd/system/

/etc/systemd/system/

Logs

journald (binary)

journald + /var/log/

journald + /var/log/

Package cache

/var/cache/pacman/pkg/

/var/cache/dnf/

/var/cache/apt/archives/

Init config

/etc/mkinitcpio.conf

/etc/dracut.conf

/etc/initramfs-tools/

Config File Differences

Config Arch RHEL Debian/Ubuntu

Bootloader

/boot/loader/ or /etc/default/grub

/etc/default/grub

/etc/default/grub

Hostname

/etc/hostname

/etc/hostname

/etc/hostname

DNS

/etc/resolv.conf (or resolved)

/etc/resolv.conf (NM)

/etc/resolv.conf (NM/resolved)

Users

/etc/passwd, /etc/shadow

Same

Same

Sudoers

/etc/sudoers.d/

Same

Same

Kernel Management

Viewing Kernels

  • Arch

  • RHEL/Fedora

  • Debian/Ubuntu

# Current kernel
uname -r

# Installed kernels
pacman -Q linux linux-lts linux-zen
# Current kernel
uname -r

# Installed kernels
dnf list installed kernel*

# Remove old kernels (keep 2)
sudo dnf remove --oldinstallonly --setopt installonly_limit=2 kernel
# Current kernel
uname -r

# Installed kernels
dpkg -l | grep linux-image

# Remove old kernels
sudo apt autoremove --purge

Installing Different Kernels

  • Arch

  • RHEL

  • Ubuntu

# LTS kernel
sudo pacman -S linux-lts linux-lts-headers

# Zen kernel (performance)
sudo pacman -S linux-zen linux-zen-headers
# Usually only one kernel available
# ELRepo for newer kernels
sudo dnf install https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
sudo dnf --enablerepo=elrepo-kernel install kernel-ml
# HWE kernel (newer)
sudo apt install linux-generic-hwe-24.04

# Mainline (manual)
# Use ubuntu-mainline-kernel.sh script

When to Use Each Distro

Choose Arch When:

  • Personal workstation/daily driver

  • Want latest software always

  • Comfortable with manual configuration

  • Learning Linux internals

  • Need AUR access

Choose RHEL/Rocky When:

  • Production enterprise servers

  • Compliance requirements (HIPAA, PCI-DSS)

  • Need 10-year support

  • Certification required (SAP, Oracle, etc.)

  • Working with enterprise vendors

Choose Fedora When:

  • Workstation with near-cutting-edge

  • Testing RHEL features early

  • Red Hat ecosystem but fresher packages

  • Developer workstation

Choose Debian/Ubuntu When:

  • Servers needing stability

  • Cloud deployments (best cloud support)

  • Research/academic environments

  • Docker/Kubernetes (Ubuntu dominates)

  • Wide hardware support needed

Quick Reference

Common Tasks by Distro

# === Install package ===
pacman -S pkg          # Arch
dnf install pkg        # RHEL/Fedora
apt install pkg        # Debian/Ubuntu

# === System upgrade ===
pacman -Syu            # Arch
dnf upgrade            # RHEL/Fedora
apt update && apt upgrade  # Debian/Ubuntu

# === Find package for file ===
pacman -Qo /path       # Arch
dnf provides /path     # RHEL/Fedora
apt-file search /path  # Debian/Ubuntu

# === Service management (all same) ===
systemctl status svc
systemctl enable --now svc
journalctl -u svc -f

# === Check distro version ===
cat /etc/os-release