20 ví dụ lệnh rpm trên Centos / Ubuntu / Debian / Fedora

Lệnh rpm là miễn phí và được phát hành dưới GPL (General Public License).

  • RPM lưu trữ thông tin về tất cả các gói đã được cài đặt trong cơ sở dữ liệu /var/lib/rpm.
  • RPM là cách duy nhất để cài đặt gói trên hệ thống Linux. Nếu bạn đã cài đặt các gói bằng mã nguồn, thì RPM sẽ không quản lý được.
  • RPM xử lý các tệp .rpm, chứa thông tin thực về các gói như: nó là gì, từ đâu đến, thông tin về các phụ thuộc, phiên bản, vv.

5 chế độ cơ bản lệnh rpm:

  • Install: Được sử dụng để cài đặt bất kỳ gói RPM nào.
  • Remove: Được sử dụng để xóa, gỡ bỏ hoặc gỡ cài đặt bất kỳ gói RPM nào.
  • Upgrade: Được sử dụng để cập nhật gói RPM hiện có.
  • Verify: Được sử dụng để xác minh gói RPM.
  • Query: Được sử dụng để truy vấn thông tin của bất kỳ gói RPM nào.

Lưu ý: bạn phải là người dùng root khi cài đặt gói trên Linux. Với quyền root, bạn có thể quản lý các lệnh rpm với các tùy chọn thích hợp.

Kiểm tra chữ ký của gói RPM

Luôn kiểm tra chữ ký PGP của các gói trước khi cài đặt trên hệ thống Linux và đảm bảo tính toàn vẹn và nguồn gốc. Sử dụng lệnh sau với tùy chọn --checksig (kiểm tra chữ ký) để kiểm tra chữ ký của một gói có tên là pidgin.

# rpm --checksig pidgin-2.7.9-5.el6.2.i686.rpm
pidgin-2.7.9-5.el6.2.i686.rpm: rsa sha1 (md5) pgp md5 OK

Cài đặt gói RPM

Để cài đặt một gói phần mềm RPM, sử dụng lệnh sau với tùy chọn -i. Ví dụ, để cài đặt gói RPM có tên pidgin-2.7.9-5.el6.2.i686.rpm.

# rpm -ivh pidgin-2.7.9-5.el6.2.i686.rpm
Preparing...                ########################################### [100%]
   1:pidgin                 ########################################### [100%]

Dưới đây là một số tùy chọn và chức năng của RPM:

  • Tùy chọn -i: Cài đặt một gói
  • Tùy chọn -v: Hiển thị chi tiết trong quá trình cài đặt
  • Tùy chọn: -h: Hiển thị thanh tiến trình khi cài đặt

Kiểm tra các phụ thuộc của gói RPM trước khi cài đặt

Giả sử bạn muốn kiểm tra các phụ thuộc trước khi cài đặt hoặc nâng cấp một gói. Ví dụ, sử dụng lệnh sau để kiểm tra các phụ thuộc của gói BitTorrent-5.2.2-1-P.noarch.rpm. Nó sẽ hiển thị danh sách các phụ thuộc của gói.

# rpm -qpR BitTorrent-5.2.2-1-Python2.4.noarch.rpm
/usr/bin/python2.4
python >= 2.3
python(abi) = 2.4
python-crypto >= 2.0
python-psyco
python-twisted >= 2.0
python-zopeinterface
rpmlib(CompressedFileNames) = 2.6

Dưới đây là một số tùy chọn và chức năng của RPM:

  • Tùy chọn -q: Truy vấn thông tin về một gói
  • Tùy chọn -p: Liệt kê các khả năng mà gói cung cấp
  • Tùy chọn -R: Liệt kê các khả năng mà gói phụ thuộc vào

Cài đặt gói RPM mà không có phụ thuộc bằng lệnh rpm

Nếu bạn biết rằng tất cả các gói cần thiết đã được cài đặt và RPM đang chỉ đơn giản là "ngốc nghếch", bạn có thể bỏ qua các phụ thuộc bằng cách sử dụng tùy chọn --nodeps (không kiểm tra phụ thuộc) trước khi cài đặt gói.

# rpm -ivh --nodeps BitTorrent-5.2.2-1-Python2.4.noarch.rpm
Preparing...                ########################################### [100%]
   1:BitTorrent             ########################################### [100%]

Lưu ý rằng việc bỏ qua các phụ thuộc có thể dẫn đến các vấn đề không ổn định hoặc không hoạt động của gói, do đó, hãy chắc chắn kiểm tra kỹ trước khi bỏ qua các phụ thuộc.

Kiểm tra một gói RPM đã được cài đặt

Sử dụng tùy chọn -q với tên gói sẽ cho thấy gói rpm đã được cài đặt hay chưa.

# rpm -q BitTorrent
BitTorrent-5.2.2-1.noarch

Liệt kê tất cả các tệp của một gói RPM đã được cài đặt

Để xem tất cả các tệp của một gói rpm đã được cài đặt, sử dụng tùy chọn -ql (query list) với lệnh rpm.

# rpm -ql BitTorrent
/usr/bin/bittorrent
/usr/bin/bittorrent-console
/usr/bin/bittorrent-curses
/usr/bin/bittorrent-tracker
/usr/bin/changetracker-console
/usr/bin/launchmany-console
/usr/bin/launchmany-curses
/usr/bin/maketorrent
/usr/bin/maketorrent-console
/usr/bin/torrentinfo-console

Lệnh rpm liệt kê các gói RPM được cài đặt gần đây

Sử dụng lệnh rpm sau với tùy chọn -qa (query all), sẽ liệt kê tất cả các gói rpm đã được cài đặt gần đây.

# rpm -qa --last
BitTorrent-5.2.2-1.noarch                     Tue 04 Dec 2012 05:14:06 PM BDT
pidgin-2.7.9-5.el6.2.i686                     Tue 04 Dec 2012 05:13:51 PM BDT
cyrus-sasl-devel-2.1.23-13.el6_3.1.i686       Tue 04 Dec 2012 04:43:06 PM BDT
cyrus-sasl-2.1.23-13.el6_3.1.i686             Tue 04 Dec 2012 04:43:05 PM BDT
cyrus-sasl-md5-2.1.23-13.el6_3.1.i686         Tue 04 Dec 2012 04:43:04 PM BDT
cyrus-sasl-plain-2.1.23-13.el6_3.1.i686       Tue 04 Dec 2012 04:43:03 PM BDT

Cách liệt kê tất cả các gói RPM đã được cài đặt

Nhập lệnh sau để in ra tên của tất cả các gói đã được cài đặt trên hệ thống Linux của bạn.

# rpm -qa
initscripts-9.03.31-2.el6.centos.i686
polkit-desktop-policy-0.96-2.el6_0.1.noarch
thunderbird-17.0-1.el6.remi.i686

Cách nâng cấp một gói RPM

Nếu muốn nâng cấp bất kỳ gói RPM nào, sử dụng tùy chọn -U (upgrade). Một trong những lợi ích chính của việc sử dụng tùy chọn này là nó không chỉ nâng cấp phiên bản mới nhất của bất kỳ gói nào, mà còn duy trì bản sao lưu của gói cũ hơn để trong trường hợp phiên bản nâng cấp mới không hoạt động, ta vẫn có thể sử dụng lại gói đã được cài đặt trước đó.

# rpm -Uvh nx-3.5.0-2.el6.centos.i686.rpm
Preparing...                ########################################### [100%]
   1:nx                     ########################################### [100%]

Cách gỡ bỏ một gói RPM bằng lệnh rpm đơn giản

Để gỡ bỏ một gói RPM, ví dụ như chúng ta sử dụng tên gói nx, không phải tên gói gốc nx-3.5.0-2.el6.centos.i686.rpm. Sử dụng tùy chọn -e (erase) để gỡ bỏ gói.

# rpm -evv nx

Cách gỡ bỏ một gói RPM mà không kiểm tra phụ thuộc

Tùy chọn --nodeps (Không kiểm tra phụ thuộc) sẽ gỡ bỏ gói rpm khỏi hệ thống một cách bắt buộc. Nhưng hãy nhớ rằng việc gỡ bỏ một gói cụ thể có thể gây ra sự cố cho các ứng dụng khác đang hoạt động.

# rpm -ev --nodeps vsftpd

Cách truy vấn một tệp thuộc về gói RPM nào

Ví dụ, bạn có danh sách các tệp và bạn muốn tìm hiểu tệp nào thuộc về gói nào. Ví dụ, lệnh sau với tùy chọn -qf (query file) sẽ cho bạn biết rằng tệp /usr/bin/htpasswd thuộc về gói httpd-tools-2.2.15-15.el6.centos.1.i686.

# rpm -qf /usr/bin/htpasswd
httpd-tools-2.2.15-15.el6.centos.1.i686

Lệnh rpm lấy thông tin của gói RPM đã được cài đặt

Giả sử bạn đã cài đặt một gói rpm và muốn biết thông tin về gói đó. Tùy chọn -qi (query info) sau đây sẽ hiển thị thông tin có sẵn của gói đã cài đặt.

# rpm -qi vsftpd
Name        : vsftpd    Relocations: (not relocatable)
Version     : 2.2.2    Vendor: CentOS
Release     : 11.el6    Build Date: Fri 22 Jun 2012 01:54:24 PM BDT
Install Date: Mon 17 Sep 2012 07:55:28 PM BDT      Build Host: c6b8.bsys.dev.centos.org
Group       : System Environment/Daemons           Source RPM: vsftpd-2.2.2-11.el6.src.rpm
Size        : 351932                               License: GPLv2 with exceptions
Signature   : RSA/SHA1, Mon 25 Jun 2012 04:07:34 AM BDT, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://vsftpd.beasts.org/
Summary     : Very Secure Ftp Daemon
Description :
vsftpd is a Very Secure FTP daemon. It was written completely from
scratch.

Lấy thông tin của gói RPM trước khi cài đặt bằng lệnh rpm

Bạn đã tải xuống một gói từ Internet và muốn biết thông tin về gói trước khi cài đặt. Ví dụ: tùy chọn -qip (query info package) sau đây sẽ hiển thị thông tin của gói sqlbuddy.

# rpm -qip sqlbuddy-1.3.3-1.noarch.rpm
Name        : sqlbuddy                     Relocations: (not relocatable)
Version     : 1.3.3                        Vendor: (none)
Release     : 1                            Build Date: Wed 02 Nov 2011 11:01:21 PM BDT
Install Date: (not installed)              Build Host: rpm.bar.baz
Group       : Applications/Internet        Source RPM: sqlbuddy-1.3.3-1.src.rpm
Size        : 1155804                      License: MIT
Signature   : (none)
Packager    : Erik M Jacobs
URL         : http://www.sqlbuddy.com/
Summary     : SQL Buddy â Web based MySQL administration
Description :
SQLBuddy is a PHP script that allows for web-based MySQL administration.

Lấy thông tin tài liệu của gói RPM đã được cài đặt

Để lấy danh sách tài liệu có sẵn của một gói đã được cài đặt, sử dụng lệnh sau với tùy chọn -qdf (query document file) sẽ hiển thị các trang tài liệu liên quan đến gói vmstat.

# rpm -qdf /usr/bin/vmstat
/usr/share/doc/procps-3.2.8/BUGS
/usr/share/doc/procps-3.2.8/COPYING
/usr/share/doc/procps-3.2.8/COPYING.LIB
/usr/share/doc/procps-3.2.8/FAQ
/usr/share/doc/procps-3.2.8/NEWS
/usr/share/doc/procps-3.2.8/TODO

Xác minh một gói RPM bằng lệnh rpm

Xác minh một gói so sánh thông tin của các tệp đã được cài đặt của gói với cơ sở dữ liệu rpm. Tùy chọn -Vp (verify package) được sử dụng để xác minh một gói.

# rpm -Vp sqlbuddy-1.3.3-1.noarch.rpm
S.5....T.  c /etc/httpd/conf.d/sqlbuddy.conf

Xác minh tất cả các gói RPM

Nhập lệnh sau để xác minh tất cả các gói rpm đã được cài đặt.

# rpm -Va
S.5....T.  c /etc/rc.d/rc.local
.......T.  c /etc/dnsmasq.conf
.......T.    /etc/ld.so.conf.d/kernel-2.6.32-279.5.2.el6.i686.conf
S.5....T.  c /etc/yum.conf
S.5....T.  c /etc/yum.repos.d/epel.repo

Nhập khóa GPG cho gói RPM

Để xác minh các gói RHEL/CentOS/Fedora, bạn phải nhập khóa GPG. Để làm điều này, thực hiện lệnh sau. Nó sẽ nhập khóa GPG của CentOS 6.

# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

Lệnh rpm liệt kê tất cả các khóa GPG RPM đã được nhập

Để in tất cả các khóa GPG đã được nhập trên hệ thống của bạn, sử dụng lệnh sau.

# rpm -qa gpg-pubkey*
gpg-pubkey-0608b895-4bd22942
gpg-pubkey-7fac5991-4615767f
gpg-pubkey-0f2672c8-4cd950ee
gpg-pubkey-c105b9de-4e0fd3a3
gpg-pubkey-00f97f56-467e318a
gpg-pubkey-6b8d79e6-3f49313d
gpg-pubkey-849c449f-4cb9df30

Tái tạo cơ sở dữ liệu RPM bị hỏng

Đôi khi cơ sở dữ liệu rpm bị hỏng và dừng mọi chức năng của rpm và các ứng dụng khác trên hệ thống. Vì vậy, trong trường hợp đó, chúng ta cần tái tạo cơ sở dữ liệu rpm và khôi phục nó với sự trợ giúp của lệnh sau.

# cd /var/lib
# rm __db*
# rpm --rebuilddb
# rpmdb_verify Packages

Mọi người cùng tìm kiếm: centos rpm, rpm centos, rpm linux