บน RHEL-based Distribution เช่น CentOS, Rocky Linux, AlmaLinux และ Fedora ใช้ระบบ RPM สำหรับจัดการซอฟต์แวร์ โดยมีสองคำสั่งหลักคือ yum (Yellowdog Updater Modified) ที่ใช้มาตั้งแต่ CentOS 7 ลงมา และ dnf (Dandified YUM) ที่เป็น Default บน CentOS 8, Rocky Linux และ AlmaLinux เป็นต้นมา dnf เป็น Successor ของ yum ที่เร็วกว่าและจัดการ Dependency ได้ดีกว่า
บทความนี้อธิบายคำสั่ง yum และ dnf ที่ใช้บ่อยในงานจริง รวมถึงการจัดการ Repository, Module Stream และ Best Practices สำหรับ Production Server บน RHEL-based Systems
yum vs dnf — ความแตกต่าง
dnf เข้ามาแทนที่ yum ตั้งแต่ RHEL/CentOS 8 เป็นต้นมา โดย yum บน RHEL 8+ เป็นเพียง Symbolic Link ไปยัง dnf ความแตกต่างหลักคือ dnf มี Dependency Resolver ที่ดีกว่า ใช้ libsolv แทนอัลกอริทึมเก่า ทำให้เร็วกว่าและแก้ปัญหา Dependency Conflict ได้ดีกว่า บน CentOS 7 หรือระบบเก่าที่ยังใช้ yum สามารถใช้ syntax เดียวกันเกือบทั้งหมดได้
คำสั่งพื้นฐาน
ติดตั้งซอฟต์แวร์
# ติดตั้งชุดเดียว
sudo dnf install nginx
sudo yum install nginx
# ติดตั้งหลายตัวพร้อมกัน
sudo dnf install nginx php php-fpm mariadb-server
# ติดตั้งโดยไม่ถามยืนยัน
sudo dnf install -y nginx
sudo yum install -y nginx
# ติดตั้ง version เฉพาะ
sudo dnf install nginx-1.20.0
อัพเดตและอัพเกรด
# ตรวจสอบว่ามีอัพเดตอะไรบ้าง
sudo dnf check-update
sudo yum check-update
# อัพเดตทุกตัว
sudo dnf update
sudo yum update
# อัพเดตเฉพาะตัวที่ระบุ
sudo dnf update nginx
sudo yum update nginx
# อัพเดตโดยไม่ถามยืนยัน
sudo dnf update -y
ลบซอฟต์แวร์
# ลบซอฟต์แวร์
sudo dnf remove nginx
sudo yum remove nginx
# ลบพร้อม Dependency ที่ไม่ต้องการ
sudo dnf autoremove nginx
# ลบ dependency ที่ไม่ได้ใช้ทั้งหมด
sudo dnf autoremove
sudo yum autoremove
ค้นหาและดูข้อมูล
# ค้นหาซอฟต์แวร์
dnf search nginx
yum search nginx
# ดูรายละเอียด
dnf info nginx
yum info nginx
# ดูซอฟต์แวร์ที่ติดตั้งอยู่
dnf list installed
dnf list installed | grep nginx
# ดูว่า Command หรือไฟล์อยู่ในชุดไหน
dnf provides /usr/sbin/nginx
dnf provides "*/netstat"
# ดูไฟล์ทั้งหมดในชุด
rpm -ql nginx
จัดการ Repository
บน RHEL-based Systems ไฟล์ Repository เก็บอยู่ที่ /etc/yum.repos.d/ สามารถเพิ่ม Repository ใหม่ได้หลายวิธี
# ดู repository ที่เปิดใช้งานอยู่
dnf repolist
dnf repolist all
# เพิ่ม EPEL Repository (Extra Packages for Enterprise Linux)
sudo dnf install epel-release
sudo yum install epel-release
# เพิ่ม Repository จาก URL โดยตรง
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# เปิด/ปิด Repository
sudo dnf config-manager --enable epel
sudo dnf config-manager --disable epel
# ติดตั้งจาก Repository เฉพาะ
sudo dnf install --enablerepo=epel htop
Module Stream — คุณสมบัติเฉพาะของ dnf
dnf บน RHEL 8+ มีระบบ Module Stream ที่ให้เลือกเวอร์ชันของ Software Stack เช่น PHP 8.0, PHP 8.1 หรือ Node.js 18, 20 โดยไม่ต้องพึ่ง Third-party Repository
# ดู Module ที่มี
dnf module list
dnf module list php
# เปิดใช้ Module Stream เฉพาะเวอร์ชัน
sudo dnf module enable php:8.1
sudo dnf install php
# ดู Module ที่เปิดอยู่
dnf module list --enabled
# รีเซ็ต Module Stream
sudo dnf module reset php
ทำความสะอาด Cache
# ลบ cache ทั้งหมด
sudo dnf clean all
sudo yum clean all
# ลบเฉพาะไฟล์เก่า
sudo dnf clean packages
sudo yum clean packages
# สร้าง cache ใหม่
sudo dnf makecache
sudo yum makecache
ดู History และย้อนกลับ
dnf และ yum เก็บ History ของทุกการติดตั้ง/ลบไว้ ทำให้สามารถย้อนกลับการเปลี่ยนแปลงได้
# ดูประวัติทั้งหมด
dnf history
yum history
# ดูรายละเอียดของ Transaction ID เฉพาะ
dnf history info 15
yum history info 15
# ย้อนกลับ Transaction ล่าสุด
sudo dnf history undo last
sudo yum history undo last
# ย้อนกลับ Transaction ID เฉพาะ
sudo dnf history undo 15
Lock และ Exclude Package
# Exclude จากการอัพเดต (ใส่ใน /etc/dnf/dnf.conf หรือ /etc/yum.conf)
# exclude=kernel* nginx
# หรือใช้ versionlock plugin
sudo dnf install dnf-plugin-versionlock
# Lock version เฉพาะ
sudo dnf versionlock add nginx
# ดูตัวที่ lock ไว้
sudo dnf versionlock list
# ปลด lock
sudo dnf versionlock delete nginx
Best Practices สำหรับ Production
- ใช้ dnf แทน yum — บน RHEL 8+ ให้ใช้ dnf เสมอ เพราะจัดการ Dependency ได้ดีกว่าและมีระบบ Module Stream
- ติดตั้ง EPEL ก่อน — สำหรับ Server ที่ต้องการซอฟต์แวร์นอก Official repo เช่น htop, certbot ให้ติดตั้ง epel-release ก่อน
- ใช้ dnf check-update ก่อน update — ตรวจสอบว่ามี Security Update หรือชุดไหนบ้างก่อนอัพเดตจริง
- ใช้ History Rollback เมื่อมีปัญหา — ถ้าอัพเดตแล้วมีปัญหา ใช้
dnf history undo lastเพื่อย้อนกลับได้ทันที - Lock kernel version — บน Production Server ที่ Kernel version มีผลต่อ Driver หรือ Module ควรใช้ versionlock กับ kernel
สรุป
dnf เป็น Package Manager หลักบน RHEL 8+ ที่มาแทนที่ yum โดยมี Dependency Resolver ที่ดีกว่า, ระบบ Module Stream สำหรับเลือก Software Version, และ History ที่ย้อนกลับได้ คำสั่งพื้นฐานอย่าง dnf install, dnf update, dnf remove และ dnf search ใช้งานได้เช่นเดียวกับ yum เกือบทุก syntax
แนะนำบริการ DE
การทดลอง dnf และ yum บน RHEL-based Systems ต้องการ Server ที่มีสิทธิ์ root เต็มรูปแบบ Cloud VPS ของ DE รองรับ OS หลากหลายรวมถึง Rocky Linux และ AlmaLinux พร้อม Root Access เต็มที่ เหมาะสำหรับทดลองจัดการซอฟต์แวร์, ติดตั้ง LEMP Stack หรือฝึก System Administration บน RHEL-based Environment
หากต้องการโฮสต์เว็บไซต์โดยไม่ต้องจัดการซอฟต์แวร์หรือ Repository เอง Cloud Hosting ของ DE มีซอฟต์แวร์พร้อมใช้งานผ่าน Control Panel รองรับการใช้งานได้ทันที

