Package Management

DNF package management, version locking, local repositories, and module streams on RHEL 10.

DNF Basics

# Search for a package
dnf search nginx

# Install a package
sudo dnf install -y nginx

# Remove a package
sudo dnf remove -y nginx

# Update all packages
sudo dnf update -y

# List installed packages
dnf list installed

# Check package info
dnf info nginx

# What package provides a file?
dnf provides */ssh

Version Locking

# Note: versionlock is built into DNF5 on RHEL 10
# Lock a package at current version
sudo dnf versionlock add nginx

# View locked packages
sudo dnf versionlock list

# Unlock a package
sudo dnf versionlock delete nginx

# Lock all currently installed packages
sudo dnf versionlock add \*

# Unlock everything
sudo dnf versionlock delete \*

Repository Management

# List configured repos
dnf repolist

# List all repos (including disabled)
dnf repolist all

# Enable a repo
sudo dnf config-manager --set-enabled rhel-10-for-x86_64-appstream-rpms

# Disable a repo
sudo dnf config-manager --set-disabled rhel-10-for-x86_64-baseos-rpms

# Add a local repo
sudo tee /etc/yum.repos.d/local.repo <<'EOF'
[local]
name=Local Repository
baseurl=file:///path/to/repo
enabled=1
gpgcheck=0
EOF

# Add remote repo
sudo dnf config-manager --add-repo https://example.com/repo.repo

Module Streams

RHEL 10 AppStream provides multiple versions of applications via module streams.

# List available module streams
dnf module list

# Enable and install a specific stream
sudo dnf module enable -y nodejs:20
sudo dnf install -y nodejs

# Switch streams (may require reset)
sudo dnf module reset -y nodejs
sudo dnf module enable -y nodejs:18

# Show module profile
dnf module info nodejs

# Install with specific profile
sudo dnf module install -y nodejs:20/common

DNF History & Rollback

# View transaction history
dnf history

# View details of a transaction
dnf history info 5

# Undo a transaction
sudo dnf history undo 5

# Redo a transaction
sudo dnf history redo 5

# Download packages without installing
sudo dnf download --downloadonly nginx

# Install from local RPM
sudo dnf install /path/to/package.rpm

Package Groups

# List available groups
dnf group list

# Install a group
sudo dnf group install -y "Server with GUI"

# Remove a group
sudo dnf group remove -y "Development Tools"

# Common groups:
# Server with GUI
# Minimal Install
# Base
# Core
# Development Tools
# System Management Tools