Lệnh rpm trong Linux — Cài đặt và quản lý gói phần mềm

Bạn đã bao giờ rơi vào tình huống đang quản trị một hệ thống server quan trọng mà cần cài đặt gấp một gói phần mềm để xử lý sự cố, nhưng lại lúng túng không biết kiểm tra phiên bản hay gỡ bỏ nó như thế nào chưa nhỉ? Với kinh nghiệm nhiều năm làm Senior System Admin, mình hiểu rằng việc nắm vững các công cụ quản lý gói là yếu tố sống còn khi vận hành vps.

rpm là một công cụ quản lý gói phần mềm cực kỳ mạnh mẽ trên các dòng phân phối như Red Hat hay CentOS. Vậy thực chất rpm là gì và làm thế nào để làm chủ nó? Trong bài viết này, mình sẽ cùng bạn tìm hiểu chi tiết cách dùng rpm để kiểm tra, cài đặt hoặc xóa bỏ các gói phần mềm một cách chuẩn xác nhất. Việc hiểu rõ cách quản lý gói rpm Linux sẽ giúp bạn tự tin hơn rất nhiều trong việc thực hiện cách quản lý phần mềm hệ thống một cách chuyên nghiệp, đúng không nào? Hãy cùng mình bắt đầu nhé!

Cần chuẩn bị gì trước khi dùng lệnh rpm?

  • Quyền user: Yêu cầu quyền root hoặc sử dụng sudo để thực hiện các thao tác cài đặt, gỡ bỏ hoặc thay đổi gói phần mềm.
  • Hệ điều hành hỗ trợ: Các bản phân phối Linux dựa trên nền tảng Red Hat như RHEL, CentOS, Fedora, AlmaLinux hoặc Rocky Linux.
  • Package dependencies: Lệnh rpm được cài đặt sẵn trên hầu hết các hệ thống RPM-based. Trong trường hợp thiếu, có thể cài đặt thông qua trình quản lý gói hệ thống bằng lệnh sudo yum install rpm hoặc sudo dnf install rpm.

Cú pháp lệnh rpm là gì?

Lệnh rpm hỗ trợ nhiều dạng cú pháp khác nhau để quản lý gói phần mềm trên các hệ thống dựa trên Red Hat Linux.

rpm [OPTIONS] PACKAGE
rpm [OPTIONS] -ivh PACKAGE
rpm [OPTIONS] -e PACKAGE
rpm [OPTIONS] -qa
rpm [OPTIONS] -q PACKAGE
# Tôi sẵn sàng hỗ trợ Tôi đã nắm rõ yêu cầu của bạn: ✅ **Nhiệm vụ:** Soạn phần "Tùy chọn thường dùng" cho lệnh **rpm** ✅ **Tiêu chuẩn:** - Liệt kê từ man page, không bịa - Giọng trung tính, khách quan - Cú pháp rõ ràng, ví dụ cụ thể ✅ **Cấu trúc:** - Tiêu đề dạng câu hỏi - Câu dẫn context (1 câu) - Bảng HTML 3 cột (tùy chọn ngắn | tùy chọn dài | mô tả) ✅ **Format:** HTML (không Markdown, không ) --- **Vui lòng cung cấp thêm thông tin:** 1. Bạn muốn tập trung vào nhóm tùy chọn nào của **rpm**? - Các tùy chọn truy vấn (-q, -qa, -qi, v.v.)? - Các tùy chọn cài đặt (-i, -U, -F)? - Các tùy chọn xóa (-e)? - Hoặc tất cả các tùy chọn thường dùng? 2. Bạn có man page cụ thể của **rpm** hay tôi nên dựa trên phiên bản tiêu chuẩn? Tôi sẽ soạn ngay khi nhận được xác nhận!

xem thêm: Package Management

Cách sử dụng lệnh rpm trong các tình huống thực tế?

Dưới đây là các kịch bản thao tác với gói phần mềm phổ biến mà quản trị viên hệ thống thường gặp khi làm việc với các bản phân phối dựa trên Red Hat.

rpm là gì? [Liệt kê tất cả các gói đã cài đặt]

rpm -qa
linux-kernel-5.14.0-71.el9.x86_64
python3-3.9.16-3.el9.x86_64
systemd-250-10.el9.x86_64

Lệnh hiển thị danh sách toàn bộ các gói phần mềm hiện có trong cơ sở dữ liệu RPM. Trong thực tế, lệnh này giúp kiểm tra nhanh phiên bản của một dịch vụ cụ thể đang chạy trên hệ thống.

rpm -ivh là gì? [Cài đặt gói phần mềm mới]

rpm -ivh nginx-1.20.1-1.el9.x86_64.rpm
Preparing...
Installing: nginx-1.20.1-1.el9.x86_64.rpm
Verifying...
Done

Tham số -i thực hiện cài đặt, -v hiển thị chi tiết và -h hiển thị thanh tiến trình. Trên môi trường production, việc sử dụng flag -v giúp theo dõi quá trình cài đặt để kịp thời phát hiện các lỗi về dependency.

rpm -Uvh là gì? [Cập nhật gói phần mềm lên phiên bản mới]

rpm -Uvh nginx-1.22.0-1.el9.x86_64.rpm
Preparing...
Updating: nginx-1.20.1-1.el9.x86_64
Installing: nginx-1.22.0-1.el9.x86_64
Verifying...
Done

Lệnh này cho phép nâng cấp gói hiện tại hoặc cài đặt mới nếu gói đó chưa tồn tại. Trong các quy trình bảo trì hệ thống, lệnh này thường được ưu tiên hơn -i để tránh xung đột giữa các phiên bản cũ và mới.

rpm -e là gì? [Gỡ bỏ một gói phần mềm]

rpm -e nginx
Removing: nginx-1.22.0-1.el9.x86_64

Lệnh thực hiện xóa hoàn toàn gói phần mềm khỏi hệ thống. Trong thực tế, người dùng cần kiểm tra kỹ tên gói trước khi thực thi để tránh xóa nhầm các thành phần quan trọng của hệ điều hành.

rpm -qp là gì? [Kiểm tra thông tin file rpm chưa cài đặt]

rpm -qp nginx-1.22.0-1.el9.x86_64.rpm
Package: nginx
Version: 1.22.0
Release: 1.el9
Architecture: x86_64

Tham số -q kết hợp với -p cho phép xem metadata của một file .rpm khi chưa tiến hành cài đặt. Đây là thao tác quan trọng trong script automation để kiểm tra tính tương thích của gói trước khi triển khai lên server.

rpm -qf kết hợp với grep là gì? [Tìm gói sở hữu một file cụ thể]

rpm -qf /usr/bin/nginx | grep nginx
nginx-1.22.0-1.el9.x86_64

Lệnh sử dụng tham số -qf để truy vấn xem một file trên hệ thống thuộc về gói phần mềm nào. Trong các trường hợp xử lý sự cố hoặc dọn dẹp hệ thống, kỹ thuật này giúp xác định chính xác nguồn gốc của các file thực thi lạ.

Các lỗi thường gặp khi sử dụng lệnh rpm là gì?

Trong quá trình quản lý gói phần mềm trên các hệ điều hành dựa trên Red Hat, người dùng thường gặp phải các lỗi liên quan đến sự phụ thuộc và xung đột dữ liệu.

Lỗi thiếu gói phụ thuộc (Dependency Error)

[user@linux ~]$ rpm -ivh nginx-1.20.1-1.el7.x86_64.rpm
error: Failed dependencies:
 libpcre.so.1 => not provided

Lệnh không thể cài đặt gói do hệ thống thiếu thư viện pcre cần thiết để chạy ứng dụng.

Lỗi xung đột gói phần mềm (Conflict Error)

[user@linux ~]$ rpm -ivh httpd-2.4.6-97.el7.x86_64.rpm
error: failed to install package httpd-2.4.6-97.el7.x86_64: repodata conflict: file /etc/httpd/conf/httpd.conf from installing httpd-2.4.6-97.el7.x86_64 conflicts with file from package httpd-2.4.6-96.el7.x86_64

Lệnh thất bại vì tệp tin cấu hình của gói mới trùng lặp với tệp tin đang tồn tại từ một phiên bản khác của cùng một gói.

Lỗi tệp tin không khớp với cơ sở dữ liệu (Database Corruption/Mismatch)

[user@linux ~]$ rpm -e wget
error: can't remove spec file /var/lib/rpm/__db.001 (Permission denied)

Lệnh không thể thực hiện việc gỡ bỏ gói do thiếu quyền quản trị hoặc cơ sở dữ liệu RPM đang bị khóa bởi một tiến trình khác.

Lỗi cài đặt đè lên gói đã tồn tại (Already Installed Error)

[user@linux ~]$ rpm -ivh vim-enhanced-8.0.1-3.el7.x86_64.rpm
error: can't install package vim-enhanced-8.0.1-3.el7.x86_64 as 'vim-enhanced-8.0.1-3.el7.x86_64' already exists in RPM database

Lệnh báo lỗi khi bạn cố gắng cài đặt một gói mới trong khi phiên bản đó đã được cài đặt sẵn trên hệ thống.

Quy trình thực tế dùng rpm trong quản lý gói phần mềm trên hệ điều hành Red Hat?

Trong kịch bản quản trị hệ thống, lệnh rpm được sử dụng như một phần của quy trình cài đặt, kiểm tra tính toàn vẹn và khắc phục lỗi các gói phần mềm cài đặt thủ công.

Bước 1: Kiểm tra thông tin chi tiết của gói phần mềm trước khi cài đặt

rpm -qp info.rpm
Package: info
Version: 1.2.3
Release: 1.el7
Architecture: x86_64

Lệnh cho phép bạn truy vấn thông tin metadata của tệp tin .rpm để xác nhận phiên bản và kiến trúc hệ thống tương thích.

sudo rpm -ivh info.rpm
Preparing...
% распаковка info-1.2.3-1.el7.x86_64.rpm
Verifying...
ติดตั้ง thành công.

Sử dụng tùy chọn -ivh giúp thực hiện cài đặt mới, đồng thời hiển thị thanh tiến trình và thông tin chi tiết quá trình giải nén gói.

rpm -ql info
/usr/bin/info
/usr/share/doc/info-1.2.3.txt

Lệnh giúp liệt kê toàn bộ đường dẫn tệp tin và thư mục đã được tạo ra trên hệ thống sau khi quá trình cài đặt hoàn tất.

rpm -V info
S.5....T.c /usr/bin/info

Trong các trường hợp nghi ngờ tệp tin bị thay đổi hoặc lỗi, lệnh này cho phép bạn so sánh mã hash và thuộc tính tệp hiện tại với dữ liệu gốc trong cơ sở dữ liệu rpm.

Việc sử dụng lệnh rpm trên VPS yêu cầu sự chính xác về trình tự cài đặt các gói phụ thuộc (dependencies). Trong các trường hợp cài đặt trực tiếp file .rpm đơn lẻ, hệ thống thường báo lỗi thiếu thư viện liên quan. Quản trị viên nên ưu tiên sử dụng lệnh yum hoặc dnf thay vì rpm để tự động hóa quá trình giải quyết các gói phụ thuộc này. Khi quản lý gói trên VPS, lệnh rpm -qa cho phép kiểm tra danh sách toàn bộ phần mềm đã cài đặt để tránh xung đột phiên bản. Đối với các tình huống cập nhật phần mềm, việc sử dụng sai tham số upgrade có thể gây lỗi cơ sở dữ liệu rpm (rpm database corruption). Khi xảy ra lỗi này, việc xây dựng lại cơ sở dữ liệu bằng lệnh rpm --rebuilddb là phương án xử lý tiêu chuẩn. Việc kiểm tra tính toàn vẹn của gói bằng lệnh rpm -V giúp xác định các tệp tin hệ thống bị thay đổi sau khi cài đặt.

Những câu hỏi thường gặp về lệnh rpm?

Dưới đây là các tình huống và thắc mắc phổ biến mà người dùng thường gặp phải khi quản lý gói phần mềm bằng rpm.

Làm thế nào để kiểm tra xem một gói phần mềm đã được cài đặt hay chưa?

Sử dụng tùy chọn -q để truy vấn trạng thái của một gói cụ thể trong hệ thống.

rpm -q wget
wget-1.19.5-10.el8.x86_64

Cách liệt kê tất cả các gói phần mềm đang có trên hệ thống?

Lệnh này cho phép bạn hiển thị danh sách toàn bộ các gói đã được cài đặt thông qua trình quản lý rpm.

rpm -qa | head -n 5
bash-4.4.20-1.el8.x86_64
bind-libs-9.11.4-3.el8.x86_64
bind-libs-9.11.4-3.el8.x86_64
bind-libs-9.11.4-3.el8.x86_64
bind-libs-9.11.4-3.el8.x86_64

Làm cách nào để xem thông tin chi tiết về một gói đã cài đặt?

Sử dụng tùy chọn -qi để lấy các thông tin như phiên bản, mô tả, kiến trúc và ngày cài đặt.

rpm -qi vim-enhanced
Name        : vim-enhanced
Version     : 8.2.2093-2.el8
Release     : 1.el8
Architecture: x86_64
Install Date: Mon 15 May 2023 10:00:00 AM UTC

Làm sao để biết một tệp tin cụ thể thuộc về gói phần mềm nào?

rpm -qf /etc/passwd
setup-7.8.0-4.el8.x86_64

Cách liệt kê tất cả các tệp tin được cài đặt bởi một gói?

Sử dụng tùy chọn -ql để xem danh sách đường dẫn của mọi tệp tin thuộc về gói đó.

rpm -ql bash
/usr/bin/bash
/usr/bin/basename
/usr/bin/bashgrp
/usr/share/doc/bash-4.4.20-1.el8.x86_64

Lệnh này có tự động tải về các gói phụ thuộc (dependencies) không?

Lệnh rpm không có khả năng tự động tải các gói phụ thuộc từ internet; nó chỉ kiểm tra và báo lỗi nếu thiếu gói cần thiết.

rpm -ivh package.rpm
error: Failed dependencies:
    libexample.so.1 => not provided

Làm thế nào để gỡ bỏ một gói phần mềm khỏi hệ thống?

Sử dụng tùy chọn -e để thực hiện quá trình xóa bỏ gói đã cài đặt.

rpm -e wget
Verifying package: wget... Done

Lệnh rpm là công cụ quản lý gói phần mềm nền tảng, giúp bạn cài đặt, gỡ bỏ và quản lý các gói .rpm trên các hệ điều hành dựa trên Red Hat. Việc nắm vững các tham số như -ivh để cài đặt kèm theo thông tin chi tiết hay -qa để liệt kê toàn bộ các gói đang hiện diện trên hệ thống sẽ giúp công việc quản trị của bạn trở nên vô cùng dễ dàng, đúng không nhỉ? Tất nhiên, việc hiểu rõ cách vận hành của nó sẽ giúp bạn kiểm soát hệ thống một cách chuyên nghiệp hơn rất nhiều. Chúc bạn thành công!

Cập nhật lần cuối: