คำสั่ง yum: วิธีใช้และออปชัน yum-utils และการตรวจสอบรีโพซิทอรี
คำสั่ง yum คือคำสั่งจัดการแพ็กเกจที่ใช้ติดตั้ง อัปเดต และลบแพ็กเกจบน Linux ตระกูล RHEL เมื่อเราลองรันคำสั่งค้นหา คำสั่งตรวจสอบอัปเดต และเครื่องมือ yum-utils บนเซิร์ฟเวอร์ AlmaLinux 9 จริง yum ทำงานเป็นโปรแกรมเดียวกับ dnf และผลลัพธ์ก็เหมือนกับ dnf
รายการรีโพซิทอรี หมายเลขรีลีสของแพ็กเกจ และเวลาที่ติดตั้งในผลลัพธ์ด้านล่างเป็นค่าตัวอย่าง
1️⃣ วิธีใช้คำสั่ง yum เบื้องต้น: yum และ dnf
บน AlmaLinux 9 เมื่อพิมพ์ yum ระบบจะรัน dnf เพราะ /usr/bin/yum เป็นลิงก์ที่ชี้ไปยัง dnf-3
ls -l /usr/bin/yum /usr/bin/dnflrwxrwxrwx 1 root root 5 Oct 5 10:12 /usr/bin/dnf -> dnf-3
lrwxrwxrwx 1 root root 5 Oct 5 10:12 /usr/bin/yum -> dnf-3ทั้งสองไฟล์เป็นลิงก์ที่ชี้ไปยัง dnf-3 ดังนั้นแม้จะรัน yum --version ก็จะแสดงเวอร์ชันของ dnf
yum --version4.14.0
Installed: dnf-0:4.14.0-21.el9_8.alma.1.noarch at Mon Oct 5 10:12:30 2026
Built : AlmaLinux Packaging Team <packager@almalinux.org> at Fri May 1 09:30:00 2026
Installed: rpm-0:4.16.1.3-23.el9.x86_64 at Mon Oct 5 10:12:08 2026
Built : AlmaLinux Packaging Team <packager@almalinux.org> at Thu Mar 12 08:15:20 2026บรรทัดแรก 4.14.0 คือเวอร์ชันของ dnf ส่วนด้านล่างเป็นเวลาที่ติดตั้งแพ็กเกจ dnf และ rpm ที่เวอร์ชันของ rpm แสดงด้วยก็เพราะสุดท้ายแล้ว yum ติดตั้งแพ็กเกจที่ได้จากรีโพซิทอรีผ่าน rpm อีกทีหนึ่ง
รูปแบบพื้นฐานของคำสั่งคือ yum ออปชัน คำสั่ง และชื่อแพ็กเกจ ตามลำดับ บรรทัดแรกของ --help คือรูปแบบนี้ และด้านล่างเป็นรายการคำสั่ง
yum --help | head -n 12usage: yum [options] COMMAND
List of Main Commands:
alias List or create command aliases
autoremove remove all unneeded packages that were originally installed as dependencies
check check for problems in the packagedb
check-update check for available package upgrades
clean remove cached data
deplist [deprecated, use repoquery --deplist] List package's dependencies and what packages provide them
distro-sync synchronize installed packages to the latest available versions
downgrade Downgrade a packageคำสั่งที่ใช้บ่อยรวบรวมไว้ในตาราง
| คำสั่ง | หน้าที่ | |
|---|---|---|
| list installed | รายการแพ็กเกจที่ติดตั้งแล้ว (ใส่ชื่อแพ็กเกจเพื่อดูเฉพาะแพ็กเกจนั้น) | |
| list updates | รายการแพ็กเกจที่มีเวอร์ชันใหม่กว่าในรีโพซิทอรี | |
| check-update | ตรวจสอบว่ามีอัปเดตหรือไม่ (ถ้ามี exit code เป็น 100) | |
| info | เวอร์ชัน ขนาด รีโพซิทอรี และคำอธิบายของแพ็กเกจหนึ่งตัว | |
| search | ค้นหาแพ็กเกจจากชื่อและสรุป | |
| install | ติดตั้งแพ็กเกจ (รวม dependency) | |
| remove | ลบแพ็กเกจ (เหมือน erase) | |
| update | อัปเดตแพ็กเกจที่ติดตั้งแล้วเป็นเวอร์ชันใหม่ (เหมือน upgrade) | |
| autoremove | ลบแพ็กเกจที่ถูกติดตั้งมาเป็น dependency และไม่จำเป็นแล้ว | |
| makecache | ดาวน์โหลดเมทาดาทาของรีโพซิทอรีไว้ก่อนและสร้างแคช | |
| clean all | ลบแคชที่ดาวน์โหลดไว้ทั้งหมด | |
| repolist | รายการรีโพซิทอรีที่เปิดอยู่ | |
| deplist | dependency และแพ็กเกจที่ให้มา (แนะนำ repoquery --deplist) | |
| history | ประวัติทรานแซกชันการติดตั้งและการลบ |
2️⃣ ออปชันของคำสั่ง yum: -y, -C, exclude, enablerepo
ออปชันจะวางไว้ระหว่าง yum กับคำสั่ง -y ตอบ yes ให้ทุกคำถาม จึงใช้ในสคริปต์ ส่วนเวลารัน update ด้วยมือบนเซิร์ฟเวอร์ใช้งานจริง ควรไม่ใส่ -y แล้วอ่านตารางทรานแซกชันก่อนตอบเอง
| ตัวเลือก | คัดลอก | คำอธิบาย |
|---|---|---|
| -C, --cacheonly | ใช้เฉพาะแคชที่ดาวน์โหลดไว้โดยไม่เชื่อมต่อรีโพซิทอรี | |
| -q, --quiet | ซ่อนข้อความแจ้ง เช่น บรรทัดเมทาดาทา และแสดงเฉพาะผลลัพธ์ | |
| --showduplicates | แสดงทั้งเวอร์ชันที่ติดตั้งแล้วและเวอร์ชันในรีโพซิทอรีของแพ็กเกจเดียวกัน | |
| --exclude=PKG, -x PKG | ตัดแพ็กเกจนั้นออกจากคำสั่งครั้งนี้ (ใช้แพตเทิร์นอย่าง kernel* ได้) | |
| --enablerepo=REPO | เปิดรีโพซิทอรีที่ปิดอยู่เฉพาะในคำสั่งครั้งนี้ | |
| --version | แสดงเวอร์ชันของ yum (dnf) และ rpm | |
| -h, --help | แสดงวิธีใช้ |
| ตัวเลือก | คัดลอก | คำอธิบาย |
|---|---|---|
| -y, --assumeyes | ตอบ yes ให้ทุกคำถาม | |
| -v, --verbose | แสดงรายละเอียดการทำงาน | |
| --disablerepo=REPO | ปิดรีโพซิทอรีที่เปิดอยู่เฉพาะในคำสั่งครั้งนี้ | |
| --skip-broken | ข้ามแพ็กเกจที่ dependency เสียแล้วทำส่วนที่เหลือต่อ |
-C แสดงผลลัพธ์จากแคชที่ดาวน์โหลดไว้เท่านั้นโดยไม่เชื่อมต่อรีโพซิทอรี บรรทัดแรกบอกเวลาที่อัปเดตแคชครั้งล่าสุด และผลลัพธ์เริ่มตั้งแต่บรรทัดที่สอง
yum -C list treeLast metadata expiration check: 0:35:03 ago on Thu Oct 29 05:32:35 2026.
Installed Packages
tree.x86_64 1.8.0-12.el9 @baseosเมื่อใส่ -q บรรทัดแรกจะหายไปและแสดงเฉพาะผลลัพธ์
yum -C -q list installed treeInstalled Packages
tree.x86_64 1.8.0-12.el9 @baseos--showduplicates แสดงเวอร์ชันที่ติดตั้งแล้วและเวอร์ชันในรีโพซิทอรีเคียงกัน
yum -C --showduplicates list libavifLast metadata expiration check: 0:38:15 ago on Thu Oct 29 05:32:35 2026.
Installed Packages
libavif.x86_64 0.11.1-7.el9 @epel
Available Packages
libavif.x86_64 1.1.1-2.el9 epel0.11.1 ใน Installed Packages และ 1.1.1 ใน Available Packages คือสองเวอร์ชันของแพ็กเกจเดียวกัน เวอร์ชันในรีโพซิทอรีสูงกว่า libavif จึงเป็นแพ็กเกจที่ต้องอัปเดต
--exclude ตัดแพ็กเกจนั้นออกจากคำสั่งครั้งนี้
yum -C --exclude=libavif check-update libavif libdav1dLast metadata expiration check: 0:35:10 ago on Thu Oct 29 05:32:35 2026.
libdav1d.x86_64 1.5.4-2.el9 epelระบุแพ็กเกจไปสองตัว แต่ libavif ถูกตัดออกและเหลือเพียง libdav1d เมื่อใช้กับ update จะอัปเดตทุกอย่างยกเว้นแพ็กเกจนั้น
3️⃣ การจัดการแพ็กเกจด้วย yum และลำดับการอัปเดต
ถึงจะรู้จักออปชันแล้ว ก็ต้องดูก่อนว่ามีอะไรติดตั้งอยู่และมีอะไรออกใหม่ จึงจะตัดสินได้ว่าจะอัปเดตแพ็กเกจไหน เราจึงเริ่มจากคำสั่งตรวจสอบแพ็กเกจที่ติดตั้งแล้ว
yum -C list installed treeInstalled Packages
tree.x86_64 1.8.0-12.el9 @baseos@baseos ในคอลัมน์สุดท้ายคือรีโพซิทอรีที่ใช้ตอนติดตั้ง ถ้าค้นด้วย rpm -q จะได้เวอร์ชันในบรรทัดเดียว
rpm -q tree htop libaviftree-1.8.0-12.el9.x86_64
package htop is not installed
libavif-0.11.1-7.el9.x86_64ถ้าแพ็กเกจไม่ได้ติดตั้ง ผลลัพธ์จะจบด้วยบรรทัดเดียวว่า not installed และ exit code เป็น 1
แพ็กเกจที่มีเวอร์ชันใหม่ในรีโพซิทอรีตรวจสอบได้ด้วย list updates
yum -C list updates libavif libdav1dLast metadata expiration check: 0:35:07 ago on Thu Oct 29 05:32:35 2026.
Available Upgrades
libavif.x86_64 1.1.1-2.el9 epel
libdav1d.x86_64 1.5.4-2.el9 epelแพ็กเกจใต้ Available Upgrades คือแพ็กเกจที่มีเวอร์ชันใหม่ ถ้าไม่ใส่ชื่อแพ็กเกจ จะตรวจทุกตัวที่ติดตั้งไว้
check-update แจ้งรายการเดียวกันผ่าน exit code ด้วย
yum -C check-update libavif libdav1d; echo $?Last metadata expiration check: 0:35:08 ago on Thu Oct 29 05:32:35 2026.
libavif.x86_64 1.1.1-2.el9 epel
libdav1d.x86_64 1.5.4-2.el9 epel
100100 ในบรรทัดสุดท้ายคือ exit code ถ้ามีอัปเดตจะเป็น 100 ถ้าไม่มีจะเป็น 0 สคริปต์จึงใช้ค่านี้ตัดสิน
การอัปเดตทำตามลำดับ makecache, update, autoremove
yum makecachemakecache ดาวน์โหลดเมทาดาทาของรีโพซิทอรีไว้ก่อน update จะดาวน์โหลดเองอยู่แล้ว จึงข้ามขั้นนี้ได้
yum updateupdate ยกแพ็กเกจที่ติดตั้งแล้วทั้งหมดเป็นเวอร์ชันใหม่และจัดการ dependency ไปพร้อมกัน
yum update libavifถ้าใส่ชื่อแพ็กเกจ จะอัปเดตเฉพาะแพ็กเกจนั้น
yum autoremoveautoremove ลบแพ็กเกจที่ถูกติดตั้งมาด้วยเป็น dependency และไม่จำเป็นแล้ว ให้รันหลัง update
yum update --exclude='kernel*'ถ้าจะอัปเดตโดยไม่รวมเคอร์เนล ให้ใส่แพตเทิร์น kernel ใน --exclude หลังอัปเดตเคอร์เนลแล้วต้องรีบูตเพื่อให้ทำงานด้วยเคอร์เนลใหม่ ส่วนจะต้องรีบูตหรือไม่ตรวจได้ด้วย needs-restarting ของ yum-utils
4️⃣ เครื่องมือ yum-utils: yumdownloader, repoquery, needs-restarting
yum-utils บน AlmaLinux 9 เป็นเลเยอร์ความเข้ากันได้ที่ dnf-plugins-core ให้มา ชื่อคำสั่งยังเหมือนสมัย YUM เดิม แต่สิ่งที่ทำงานจริงคือปลั๊กอินของ dnf
yum -C info yum-utilsLast metadata expiration check: 0:38:12 ago on Thu Oct 29 05:32:35 2026.
Installed Packages
Name : yum-utils
Version : 4.3.0
Release : 14.el9
Architecture : noarch
Size : 23 k
Source : dnf-plugins-core-4.3.0-14.el9.src.rpm
Repository : @System
From repo : baseos
Summary : Yum-utils CLI compatibility layer
URL : https://github.com/rpm-software-management/dnf-plugins-core
License : GPLv2+
Description : As a Yum-utils CLI compatibility layer, supplies in CLI shims for
: debuginfo-install, repograph, package-cleanup, repoclosure, repomanage,
: repoquery, reposync, repotrack, repodiff, builddep, config-manager, debug,
: download and yum-groups-manager that use new implementations using DNF.Source คือ dnf-plugins-core และ Summary คือ Yum-utils CLI compatibility layer ถ้ายังไม่ได้ติดตั้ง ให้ติดตั้งด้วย [yum install yum-utils]
คำสั่ง 17 ตัวที่แพ็กเกจนี้ติดตั้งดูได้ด้วย rpm -ql
rpm -ql yum-utils | grep bin//usr/bin/debuginfo-install
/usr/bin/find-repos-of-install
/usr/bin/needs-restarting
/usr/bin/package-cleanup
/usr/bin/repo-graph
/usr/bin/repoclosure
/usr/bin/repodiff
/usr/bin/repomanage
/usr/bin/repoquery
/usr/bin/reposync
/usr/bin/repotrack
/usr/bin/yum-builddep
/usr/bin/yum-config-manager
/usr/bin/yum-debug-dump
/usr/bin/yum-debug-restore
/usr/bin/yum-groups-manager
/usr/bin/yumdownloaderls -l /usr/bin/yumdownloader /usr/bin/repoquery /usr/bin/needs-restarting /usr/bin/yum-config-managerlrwxrwxrwx 1 root root 22 Mar 3 2026 /usr/bin/needs-restarting -> /usr/libexec/dnf-utils
lrwxrwxrwx 1 root root 22 Mar 3 2026 /usr/bin/repoquery -> /usr/libexec/dnf-utils
lrwxrwxrwx 1 root root 22 Mar 3 2026 /usr/bin/yum-config-manager -> /usr/libexec/dnf-utils
lrwxrwxrwx 1 root root 22 Mar 3 2026 /usr/bin/yumdownloader -> /usr/libexec/dnf-utilsทั้งหมดเป็นลิงก์ที่ชี้ไปยังไฟล์เดียวคือ /usr/libexec/dnf-utils เครื่องมือที่ใช้บ่อยและหน้าที่ของแต่ละตัวรวมไว้เป็นทรี
yumdownloader ดาวน์โหลดไฟล์แพ็กเกจอย่างเดียวโดยไม่ติดตั้ง ถ้าใส่ --urls จะแสดงเฉพาะที่อยู่ที่จะดาวน์โหลด
yumdownloader --urls treeLast metadata expiration check: 0:35:16 ago on Thu Oct 29 05:32:35 2026.
https://repo.almalinux.org/almalinux/9.8/BaseOS/x86_64/os/Packages/tree-1.8.0-12.el9.x86_64.rpmที่อยู่รีโพซิทอรีและชื่อไฟล์แสดงในบรรทัดเดียว ใช้ที่อยู่นี้ดาวน์โหลดไฟล์ไว้ก่อนเพื่อนำไปติดตั้งบนเซิร์ฟเวอร์ที่ไม่มีอินเทอร์เน็ตได้
repoquery ค้นไฟล์ที่แพ็กเกจติดตั้งและ dependency ของแพ็กเกจ
repoquery -l treeLast metadata expiration check: 0:35:17 ago on Thu Oct 29 05:32:35 2026.
/usr/bin/tree
/usr/lib/.build-id
/usr/lib/.build-id/e0
/usr/lib/.build-id/e0/e2ec3d46003583b56979e08d437395bd0d2a07
/usr/share/doc/tree
/usr/share/doc/tree/README
/usr/share/licenses/tree
/usr/share/licenses/tree/LICENSE
/usr/share/man/man1/tree.1.gz-l คือรายการไฟล์ของแพ็กเกจนั้น มีไฟล์รันได้หนึ่งไฟล์ พร้อมเอกสาร ไลเซนส์ และคู่มือ
repoquery --requires treeLast metadata expiration check: 0:35:19 ago on Thu Oct 29 05:32:35 2026.
libc.so.6(GLIBC_2.34)(64bit)
rtld(GNU_HASH)--requires คือไลบรารีที่ต้องใช้ yum deplist ก็แสดงข้อมูลเดียวกันพร้อมแพ็กเกจที่ให้มา แต่ในวิธีใช้ระบุว่า deprecated จึงใช้ repoquery --deplist แทน
yum -C repoquery --deplist treeLast metadata expiration check: 0:38:17 ago on Thu Oct 29 05:32:35 2026.
package: tree-1.8.0-12.el9.x86_64
dependency: libc.so.6(GLIBC_2.34)(64bit)
provider: glibc-2.34-170.el9_8.x86_64
dependency: rtld(GNU_HASH)
provider: glibc-2.34-170.el9_8.i686
provider: glibc-2.34-170.el9_8.x86_64บรรทัด dependency คือสิ่งที่ต้องใช้ และบรรทัด provider คือแพ็กเกจที่ให้สิ่งนั้น
จะต้องรีบูตหลังอัปเดตหรือไม่ตรวจได้ด้วย needs-restarting -r
needs-restarting -rNo core libraries or services have been updated since boot-up.
Reboot should not be necessary.หลังอัปเดตเคอร์เนลหรือไลบรารีหลัก ข้อความจะเปลี่ยนเป็นแจ้งว่าต้องรีบูต และจบด้วย exit code 1
ถ้ารัน package-cleanup โดยไม่ใส่ออปชัน จะแสดงเพียงข้อความให้เลือกว่าจะตรวจอะไร
package-cleanuppackage-cleanup has to be executed with one of the options: --dupes, --leaves, --orphans, --problems or --cleandupes5️⃣ ตรวจสอบรีโพซิทอรีของ yum: repolist และออปชัน enablerepo
ถึงมีเครื่องมือครบ ถ้าแพ็กเกจไม่อยู่ในรีโพซิทอรี yum ก็หาอะไรไม่เจอ จึงต้องดูก่อนว่ารีโพซิทอรีของ yum ตัวไหนเปิดอยู่
yum repolistrepo id repo name
appstream AlmaLinux 9 - AppStream
baseos AlmaLinux 9 - BaseOS
epel Extra Packages for Enterprise Linux 9 - x86_64
epel-cisco-openh264 Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64
extras AlmaLinux 9 - Extrasrepolist แสดงเฉพาะรีโพซิทอรีที่ตั้ง enabled=1 ในไฟล์ตั้งค่า baseos และ appstream เป็นรีโพซิทอรีหลักของดิสโทร ส่วน epel เป็นรีโพซิทอรีที่เพิ่มเอง
yum repolist --all | head -n 12repo id repo name status
appstream AlmaLinux 9 - AppStream enabled
appstream-debuginfo AlmaLinux 9 - AppStream - Debug disabled
appstream-source AlmaLinux 9 - AppStream - Source disabled
baseos AlmaLinux 9 - BaseOS enabled
baseos-debuginfo AlmaLinux 9 - BaseOS - Debug disabled
baseos-source AlmaLinux 9 - BaseOS - Source disabled
crb AlmaLinux 9 - CRB disabled
crb-debuginfo AlmaLinux 9 - CRB - Debug disabled
crb-source AlmaLinux 9 - CRB - Source disabled
epel Extra Packages for Enterprise Linux 9 - x enabled
epel-cisco-openh264 Extra Packages for Enterprise Linux 9 ope enabled--all แสดงรีโพซิทอรีที่ปิดอยู่ด้วยพร้อมคอลัมน์ status แพ็กเกจในรีโพซิทอรีที่เป็น disabled อย่าง crb จะติดตั้งแบบนั้นไม่ได้
ถ้าจะเปิดรีโพซิทอรีที่ปิดอยู่เฉพาะในคำสั่งครั้งนี้ ให้ใส่ --enablerepo
yum --enablerepo=crb repolistrepo id repo name
appstream AlmaLinux 9 - AppStream
baseos AlmaLinux 9 - BaseOS
crb AlmaLinux 9 - CRB
epel Extra Packages for Enterprise Linux 9 - x86_64
epel-cisco-openh264 Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64
extras AlmaLinux 9 - Extrascrb เข้ามาอยู่ในรายการแล้ว ไฟล์ตั้งค่ายังเหมือนเดิม คำสั่งถัดไป crb จึงหลุดออกอีก ถ้าต้องการเปิดรีโพซิทอรีไว้ตลอด ให้ใช้ yum-config-manager แก้ไฟล์ตั้งค่า ดูการเปิดปิดของรีโพซิทอรีได้โดยกดปุ่มคำสั่งในไดอะแกรมด้านล่าง
การเพิ่มรีโพซิทอรีใหม่อย่าง EPEL ทำได้แค่ติดตั้งแพ็กเกจรีโพซิทอรีหนึ่งตัว
yum install epel-releaseเมื่อติดตั้งแล้วจะมีไฟล์ epel.repo ใต้ /etc/yum.repos.d/ และ epel จะปรากฏใน repolist
🔲 ซิมูเลเตอร์คำสั่ง yum
ในซิมูเลเตอร์ด้านล่าง คุณพิมพ์ yum list, check-update, repolist และคำสั่ง yum-utils เองแล้วดูผลลัพธ์ได้ รายการรีโพซิทอรีใช้ค่าตัวอย่างเดียวกับในบทความ ส่วนคำสั่งติดตั้ง ลบ และอัปเดตจะแสดงเพียงข้อความแจ้ง
🔢 FAQ & เนื้อหาแนะนำ
Linux · แนวคิด
แพ็กเกจ Linux คืออะไร
อธิบายว่าแพ็กเกจที่ yum จัดการคืออะไร และ dependency เกิดขึ้นได้อย่างไร โดยเทียบกับไฟล์ติดตั้งของ Windows
Ubuntu · แพ็กเกจ
คำสั่ง apt ของ Ubuntu
คำสั่ง apt ที่ทำหน้าที่แทน yum ในตระกูล Debian ความต่างกับ apt-get และวิธีติดตั้งกับอัปเดต
Linux · แพ็กเกจ
ติดตั้ง snapd บน Linux
วิธีติดตั้งโปรแกรมที่ไม่มีในรีโพซิทอรีของดิสโทรด้วย snap ตรวจสอบบน Rocky Linux
ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน