Lệnh yum trong Linux là công cụ quản lý gói phần mềm mạnh mẽ, sử dụng giao diện dòng lệnh, giúp người dùng dễ dàng cài đặt, cập nhật, gỡ bỏ và kiểm soát các ứng dụng trên hệ điều hành Linux dựa trên nền tảng RPM như CentOS, RHEL và Fedora. Trong bài viết này, mình sẽ hướng dẫn bạn chi tiết cách sử dụng lệnh Yum từ cơ bản đến nâng cao qua các ví dụ chi tiết.
Những điểm chính
- Khái niệm lệnh yum Linux: Là một công cụ quản lý gói mã nguồn mở cho các bản phân phối Linux dựa trên RPM, giúp cài đặt, cập nhật và gỡ bỏ phần mềm một cách dễ dàng.
- Chức năng chính: Bao gồm cài đặt, cập nhật, gỡ bỏ gói, quản lý các gói phụ thuộc và tìm kiếm phần mềm trong các kho lưu trữ.
- Các tùy chọn lệnh yum phổ biến: Cung cấp nhiều tùy chọn như install, update, remove, search, list và history để thực hiện các tác vụ quản lý gói khác nhau.
- Ví dụ sử dụng lệnh yum: Bài viết cung cấp các ví dụ thực tế về cách cài đặt, cập nhật, tìm kiếm, quản lý kho lưu trữ và theo dõi lịch sử giao dịch bằng lệnh yum.
- Giải đáp một số thắc mắc thường gặp khi sử dụng lệnh yum.
Lệnh yum Linux là gì?
Yum (Yellowdog Updater Modified) là một công cụ quản lý gói mã nguồn mở thiết yếu trên các bản phân phối Linux dựa trên RPM, bao gồm CentOS, RHEL, Fedora, Rocky Linux và AlmaLinux. Mục đích chính của YUM là giúp người dùng dễ dàng cài đặt, gỡ bỏ và cập nhật phần mềm một cách hiệu quả bằng cách tự động xử lý và giải quyết tất cả các gói phụ thuộc cần thiết từ các kho lưu trữ đã cấu hình.

Ngày nay, DNF (Dandified Yum) đã thay thế YUM làm trình quản lý gói mặc định trong các phiên bản Linux mới hơn. DNF hoạt động hiệu quả hơn, đặc biệt trong việc xử lý các gói phụ thuộc và tốc độ. Tuy nhiên, lệnh yum thường vẫn được giữ lại như một bí danh (alias) cho lệnh dnf trên các hệ thống mới để đảm bảo tính tương thích ngược.
Cú pháp cơ bản của lệnh yum:
yum [options] [command] [package ...]Trong đó:
- [options]: Là các tham số tùy chọn dùng để thay đổi hành vi mặc định của lệnh.
- [command]: Là hành động chính mà bạn muốn thực hiện, ví dụ như cài đặt, cập nhật, gỡ bỏ, hoặc tìm kiếm.
- [package …]: Là tên của một hoặc nhiều gói phần mềm mà bạn muốn thực hiện hành động trên.
Chức năng chính của yum Linux
Yum thực hiện các chức năng cốt lõi sau để quản lý phần mềm trên hệ thống Linux:
- Cài đặt gói: Lấy và cài đặt phần mềm từ các kho lưu trữ vào hệ thống.
- Cập nhật gói và hệ thống: Nâng cấp các gói đã cài đặt lên phiên bản mới nhất, đồng thời cập nhật toàn bộ hệ điều hành.
- Gỡ bỏ gói: Xóa bỏ phần mềm đã cài đặt cùng với các tập tin cấu hình liên quan.
- Quản lý phụ thuộc: Tự động xử lý và cài đặt các gói phần mềm khác mà chương trình chính yêu cầu để hoạt động.
- Tìm kiếm phần mềm: Tra cứu các gói phần mềm có sẵn trong các kho lưu trữ đã được cấu hình.

Các tùy chọn lệnh yum phổ biến
| Tùy chọn | Chức năng |
|---|---|
install | Cài đặt một gói phần mềm mới và tất cả các gói phụ thuộc (dependencies) của nó. |
reinstall | Cài đặt lại một gói phần mềm đã tồn tại trên hệ thống. |
update | Cập nhật một gói phần mềm cụ thể hoặc cập nhật toàn bộ hệ thống lên phiên bản mới nhất. |
upgrade | Tương tự như update, nhưng có thêm tùy chọn xử lý các gói lỗi thời. |
downgrade | Hạ cấp một gói phần mềm về phiên bản cũ hơn. |
check-update | Kiểm tra xem có bản cập nhật nào khả dụng cho các gói đã cài đặt không. |
remove | Gỡ bỏ (xóa) một gói phần mềm khỏi hệ thống. |
search | Tìm kiếm các gói phần mềm trong tất cả các kho lưu trữ dựa trên từ khóa. |
info | Hiển thị thông tin chi tiết về một gói phần mềm (phiên bản, mô tả, nhà cung cấp). |
list | Liệt kê các gói phần mềm đã cài đặt hoặc có sẵn trong các kho lưu trữ. |
clean all | Dọn dẹp bộ nhớ cache của yum (các file tiêu đề và gói tải xuống). |
history | Xem lịch sử các giao dịch (cài đặt, cập nhật, gỡ bỏ) đã thực hiện bằng yum. |
Ví dụ sử dụng lệnh yum trong Linux
- Thực hiện cài đặt gói phần mềm
- Cài đặt lại, cập nhật và hạ cấp package
- Tra cứu thông tin và danh sách package
- Quản lý kho lưu trữ
- Thao tác với nhóm phần mềm
- Quản lý bộ nhớ tạm (Cache)
- Theo dõi và quản lý lịch sử giao dịch
- Sử dụng giao diện dòng lệnh tương tác (Yum Shell)
- Lệnh yum provides
- Quản lý repository
- Truy vết nguồn gốc package
Thực hiện cài đặt gói phần mềm
- Cài đặt cơ bản: Để cài đặt một gói phần mềm, ví dụ như
php, bạn chỉ cần sử dụng lệnh:
sudo yum install php- Tùy chọn không cần nhắc nhở: Trong quá trình cài đặt,
yumthường sẽ yêu cầu xác nhận. Để tự động đồng ý và bỏ qua bước này, bạn có thể thêm tùy chọn-y:
sudo yum -y install php- Cài đặt gói từ file trên máy tính: Nếu bạn có một file RPM đã tải về, bạn có thể cài đặt file này bằng lệnh
yum localinstall. Từ các phiên bản RHEL 6 trở lên, bạn có thể dùng trực tiếp lệnhinstall:
sudo yum localinstall /path/to/package.rpm- Cài đặt gói từ kho lưu trữ cụ thể: Để cài đặt một gói từ một kho lưu trữ (repository) cụ thể mà không phải là kho mặc định, bạn có thể sử dụng cú pháp sau:
sudo yum --enablerepo=repository_name install package_nameCài đặt lại, cập nhật và hạ cấp package
- Cài đặt lại: Nếu một gói phần mềm gặp lỗi, bạn có thể cài đặt lại mà không ảnh hưởng đến các file cấu hình bằng lệnh:
sudo yum reinstall php- Cập nhật: Để cập nhật một gói phần mềm cụ thể, ví dụ như trình duyệt Firefox, hãy dùng lệnh:
sudo yum update firefoxĐể cập nhật hệ thống lên một phiên bản cụ thể của gói:
sudo yum update-to package-versionĐể loại trừ một gói cụ thể khi cập nhật toàn bộ hệ thống:
sudo yum update --exclude=package_name- Hạ cấp (Downgrade): Để quay trở lại phiên bản cũ hơn của một gói phần mềm, bạn có thể sử dụng lệnh
downgrade:
sudo yum downgrade php
Lưu ý
Việc hạ cấp có thể gây ra xung đột phụ thuộc và làm hệ thống hoạt động không ổn định, vì vậy bạn hãy sao lưu dữ liệu quan trọng trước khi thực hiện.
Tra cứu thông tin và danh sách package
- Liệt kê package: Lệnh
yum listsẽ hiển thị một danh sách rất dài, bạn có thể kết hợp với các lệnh khác nhưheadđể xem một phần:
sudo yum list | head -10Liệt kê các gói đã được cài đặt:
sudo yum list installedLiệt kê các gói được cài từ những kho lưu trữ hiện đã bị vô hiệu hóa:
sudo yum list extras- Tìm kiếm package: Để tìm một gói phần mềm khi bạn không nhớ chính xác tên, hãy dùng lệnh
search:
sudo yum search php- Tìm package chứa file cụ thể: Nếu bạn muốn biết gói phần mềm nào cung cấp một file cụ thể, hãy sử dụng lệnh
provides:
sudo yum provides /etc/httpd/conf/httpd.conf- Xem các gói phụ thuộc: Để xem danh sách tất cả các gói phụ thuộc của một phần mềm, hãy dùng lệnh
deplist:
sudo yum deplist package_nameQuản lý kho lưu trữ
- Kiểm tra trạng thái kho lưu trữ: Để xem danh sách tất cả các kho phần mềm và trạng thái của chúng (đang bật hay tắt), bạn dùng lệnh:
sudo yum repolist all
- Kích hoạt kho lưu trữ: Để bật một kho lưu trữ đang bị tắt, bạn có thể dùng lệnh
yum-config-manager:
sudo yum-config-manager --enable repository_name- Vô hiệu hóa kho lưu trữ: Ngược lại, để tắt một kho lưu trữ, bạn dùng lệnh sau:
sudo yum-config-manager --disable repository_name- Liệt kê các kho đang được bật: Lệnh
yum repolistsẽ hiển thị các kho đang hoạt động.
yum repolist
Thao tác với nhóm phần mềm
Lệnh yum cho phép quản lý các nhóm phần mềm liên quan với nhau một cách dễ dàng.
- Hiển thị nhóm package: Lệnh
yum grouplistsẽ hiển thị các nhóm phần mềm có sẵn và đã được cài đặt.
yum grouplist- Cài đặt/Cập nhật/Xóa nhóm: Bạn có thể thực hiện các thao tác trên toàn bộ một nhóm bằng các lệnh tương ứng:
sudo yum groupinstall "Development Tools"
sudo yum groupupdate "Security Tools"
sudo yum groupremove "GNOME Desktop"- Xóa các gói phụ thuộc không sử dụng: Sau khi gỡ bỏ phần mềm, có thể còn lại các gói phụ thuộc không cần thiết. Lệnh
autoremovesẽ giúp bạn xử lý các gói này:
sudo yum autoremoveQuản lý bộ nhớ tạm (Cache)
yum lưu trữ các gói phần mềm và siêu dữ liệu đã tải về trong một cache để tăng tốc độ cho các lần sử dụng sau. Tuy nhiên, đôi khi bộ nhớ này có thể bị lỗi hoặc chiếm nhiều dung lượng. Người dùng có thể dọn dẹp toàn bộ bộ nhớ đệm bằng lệnh sau:
sudo yum clean allLệnh này sẽ xóa các gói RPM đã tải về, siêu dữ liệu của kho lưu trữ và bất kỳ dữ liệu tạm thời nào khác, buộc yum phải tải lại thông tin mới nhất trong lần chạy tiếp theo.
Theo dõi và quản lý lịch sử giao dịch
Mỗi hành động mà lệnh yum thực hiện, từ cài đặt đến gỡ bỏ đều được ghi lại. Tính năng này rất hữu ích để theo dõi các thay đổi trên hệ thống và hoàn tác khi cần thiết.
- Hiển thị lịch sử: Lệnh
sudo yum historysẽ hiển thị toàn bộ lịch sử các giao dịch, bao gồm ID giao dịch, dòng lệnh đã sử dụng, ngày giờ và trạng thái:
sudo yum history
- Xem chi tiết giao dịch: Để xem thông tin chi tiết về một giao dịch cụ thể, bạn có thể sử dụng lệnh
yum history infokèm theo ID của giao dịch đó:
sudo yum history info 3
- Hoàn tác giao dịch (Undo/Rollback): Bạn có thể hoàn tác một giao dịch cụ thể bằng lệnh
undo. Ví dụ, để hoàn tác giao dịch có ID là 2, bạn thực hiện lệnh này:
sudo yum history undo 2
Kinh nghiệm:
- Thực hiện lại hành động (Redo): Nếu bạn muốn thực hiện lại một giao dịch đã hoàn tác trước đó, hãy sử dụng lệnh
redo:
sudo yum history redo 2Sử dụng giao diện dòng lệnh tương tác (Yum Shell)
Để thực hiện nhiều thao tác cùng một lúc, bạn có thể sử dụng môi trường shell tương tác của yum.
- Bạn kích hoạt môi trường này bằng lệnh sau:
sudo yum shell
- Trong môi trường shell, bạn có thể nhập nhiều lệnh liên tiếp nhau, ví dụ như cài đặt, cập nhật, và xóa các gói khác nhau. Sau khi đã liệt kê xong các hành động, bạn chỉ cần gõ lệnh
runđểyumthực thi tất cả chúng trong một giao dịch duy nhất
Lệnh yum provides
Tình huống: Bạn cần cài đặt một công cụ nhưng không nhớ tên package, chỉ nhớ tên file thực thi (ví dụ: netstat) hoặc một file cấu hình quan trọng (/etc/my.cnf). Lúc này, yum search thường sẽ không hữu ích vì bạn chỉ có thể tìm kiếm trong tên và mô tả của package. Trong trường hợp này, bạn có thể sử dụng yum provides (hoặc yum whatprovides). Lệnh này hoạt động bằng cách kiểm tra danh sách tất cả các file của mọi package trong repository để tìm ra chính xác package nào chứa file bạn cần.
Ví dụ 1: Tìm lệnh netstat
# Lệnh search thông thường cho ra kết quả nhiễu, không liên quan
yum search netstat
# Dùng provides để tìm chính xác package chứa file thực thi "netstat"
yum provides "*/netstat"
Kết quả:

net-tools-2.0-0.25.20131004git.el7.x86_64 : Basic networking tools
Repo : base
Matched from:
Filename : /bin/netstatKết quả truy vấn xác nhận rằng việc cài đặt package net-tools là điều kiện cần để hệ thống có thể sử dụng lệnh /bin/netstat. Nhờ vậy, vấn đề tìm đúng gói chương trình cho lệnh netstat đã được xử lý hiệu quả và chính xác.
Ví dụ 2: Tìm package chứa file cấu hình MySQL
yum provides "/etc/my.cnf"
Bạn sẽ thấy kết quả trỏ đến các package như mariadb-libs hoặc mysql-community-libs, giúp bạn biết chính xác cần cài đặt gói nào.
Quản lý repository
Tình huống: Bạn cần cài đặt phiên bản PHP 8.1 từ repository Remi, nhưng hệ thống cố gắng cài phiên bản PHP 5.4 cũ từ repo base hoặc gây xung đột với các gói từ repo EPEL. Trong trường hợp này, việc vô hiệu hóa vĩnh viễn các file .repo có thể gây ra sự cố khác nên giải pháp an toàn và linh hoạt hơn là sử dụng cờ --enablerepo và --disablerepo để chỉ định repository ngay trong câu lệnh yum.
Ví dụ: Cài đặt PHP 8.1 từ Remi mà không bị ảnh hưởng bởi repo khác:
# Vô hiệu hóa TẤT CẢ các repo (*), sau đó chỉ bật lại repo remi-php81
yum --disablerepo="*" --enablerepo="remi-php81" install php php-cli php-commonPhân tích lệnh:
--disablerepo="*": Một công tắc tổng tạm thời tắt mọi repository.--enablerepo="remi-php81": Chỉ bật duy nhất repository bạn muốn sử dụng cho lần thực thi này.
Cách làm này đảm bảo yum chỉ nhìn thấy các gói từ repository bạn chỉ định, loại bỏ hoàn toàn nguy cơ xung đột phiên bản hoặc phụ thuộc.
Truy vết nguồn gốc package
Tình huống: Bạn tiếp nhận một máy chủ mới và cần nâng cấp một phần mềm, ví dụ như PHP. Vấn đề đặt ra là: Phiên bản PHP hiện tại được cài đặt từ đâu (Từ repo base EPEL, Remi hay được biên dịch từ mã nguồn)? Và việc nâng cấp sai cách có thể phá vỡ toàn bộ hệ thống.
Bước 1: Kiểm tra xem package có được quản lý bởi RPM/YUM không:
$ rpm -q php
php-8.1.27-1.el7.remi.x86_64- Nếu lệnh trả về tên và phiên bản đầy đủ như trên, phiên bản được cài đặt từ một package RPM.
- Nếu lệnh báo lỗi “
package php is not installed“, rất có thể phiên bản đã được cài thủ công từ mã nguồn.
Hoặc bạn dùng lệnh:
yum list installed
Bước 2: Tìm ra package được cài từ Repository nào
Khi đã xác định package được quản lý bởi YUM, hãy dùng lệnh yum info để xem thông tin chi tiết.
$ yum info phpKết quả:
Loaded plugins: fastestmirror
Installed Packages
Name : php
Arch : x86_64
Version : 8.1.27
Release : 1.el7.remi
Size : 4.8 M
Repo : installed
From repo : remi-php81 <-- ĐÂY CHÍNH LÀ CÂU TRẢ LỜI!
Summary : PHP scripting language for creating dynamic web sites
URL : http://www.php.net/
License : PHP and Zend and BSD
Description : PHP is an HTML-embedded scripting language.
Dòng From repo : remi-php81 cho bạn biết chính xác nguồn gốc của package, bạn có thể lên kế hoạch nâng cấp hoặc cài đặt các extension khác từ cùng một repository để đảm bảo tính tương thích.
Câu hỏi thường gặp
Xử lý lỗi “Could not retrieve mirrorlist” khi chạy yum như thế nào?
Để khắc phục lỗi “Could not retrieve mirrorlist” khi chạy yum, bạn có thể kiểm tra kết nối mạng và xóa bộ nhớ đệm yum bằng lệnh yum clean all. Nguyên nhân của lỗi này thường do sự cố mạng hoặc sự cố với kho lưu trữ, vì vậy việc làm sạch bộ nhớ đệm là một cách hiệu quả để khắc phục.
Làm thế nào dọn dẹp cache và khắc phục lỗi khi yum không update được?
Để khắc phục lỗi khi yum không cập nhật được, trước tiên hãy dọn dẹp cache bằng lệnh yum clean all hoặc yum clean metadata. Sau đó, bạn xóa tất cả các tệp lưu trữ bị lỗi rồi chạy lại yum update.
Làm sao để hạ cấp package về phiên bản thấp hơn bằng yum?
Sử dụng câu lệnh yum downgrade để hạ cấp xuống phiên bản trước đó được repo lưu trữ. Lưu ý, không phải repo nào cũng hỗ trợ đầy đủ package cũ, bạn cần kiểm tra kỹ chính sách và cấu trúc repo.
Qua bài viết, bạn đã có cái nhìn tổng quan về công cụ Yum và biết cách áp dụng các lệnh cơ bản để thao tác với gói phần mềm trên Linux. Hy vọng những thông tin này sẽ hỗ trợ đắc lực cho công việc quản trị hệ thống của bạn. Nếu bạn muốn tìm hiểu sâu hơn về các chủ đề liên quan đến Linux thì có thể tham khảo thêm một số bài viết dưới đây:




