20 YUM command (Yellowdog Updater Modified) để quản lý gói

Trong bài viết này, chúng ta sẽ tìm hiểu cách cài đặt, cập nhật, gỡ bỏ, tìm kiếm gói, quản lý gói và kho lưu trữ trên hệ thống Linux bằng YUM command (Yellowdog Updater Modified), một công cụ được phát triển bởi RedHat.

Các lệnh ví dụ được hiển thị trong bài viết này đã được thử nghiệm thực tế trên máy chủ RHEL 8 của chúng tôi, bạn có thể sử dụng tài liệu này để học tập, chứng chỉ RHEL hoặc chỉ để khám phá cách cài đặt các gói mới và duy trì hệ thống của bạn.

Yêu cầu cơ bản của bài viết này là bạn phải có hiểu biết cơ bản về các lệnh và một hệ điều hành Linux làm việc, trong đó bạn có thể khám phá và thực hành tất cả các lệnh được liệt kê dưới đây.

YUM là gì?

YUM (Yellowdog Updater Modified) là một công cụ quản lý gói dựa trên dòng lệnh và đồ họa mã nguồn mở dành cho các hệ thống Linux dựa trên RPM (RedHat Package Manager).

Nó cho phép người dùng và quản trị hệ thống dễ dàng cài đặt, cập nhật, gỡ bỏ hoặc tìm kiếm các gói phần mềm trên hệ thống. Nó đã được phát triển và phát hành bởi Seth Vidal dưới giấy phép GPL (General Public License) như một mã nguồn mở, điều đó có nghĩa là bất kỳ ai cũng có thể được phép tải xuống và truy cập mã nguồn để sửa lỗi và phát triển các gói tùy chỉnh.

YUM sử dụng nhiều kho lưu trữ bên thứ ba để tự động cài đặt các gói bằng cách giải quyết các vấn đề phụ thuộc của chúng.

Cập nhật: Lệnh yum đã được thay thế bằng lệnh dnf, đây là một phiên bản thế hệ tiếp theo của yum và được coi là sự thay thế cho YUM trong hầu hết các bản phân phối mới hơn dựa trên RPM.

20 yum command để quản lý gói

1. Cài đặt gói bằng YUM

Để cài đặt một gói có tên Firefox, chỉ cần chạy lệnh sau đây, nó sẽ tự động tìm và cài đặt tất cả các phụ thuộc cần thiết cho Firefox.

# yum install firefox
Loaded plugins: fastestmirror
Dependencies Resolved

================================================================================================
 Package                    Arch        Version                    Repository            Size        
================================================================================================
Updating:
firefox                        i686        10.0.6-1.el6.centos     updates             20 M
Updating for dependencies:
 xulrunner                     i686        10.0.6-1.el6.centos     updates             12 M

Transaction Summary
================================================================================================
Install       0 Package(s)
Upgrade       2 Package(s)

Total download size: 32 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): firefox-10.0.6-1.el6.centos.i686.rpm                                |  20 MB   01:10
(2/2): xulrunner-10.0.6-1.el6.centos.i686.rpm                              |  12 MB   00:52
------------------------------------------------------------------------------------------------
Total                                                           63 kB/s |  32 MB   02:04

Updated:
  firefox.i686 0:10.0.6-1.el6.centos

Dependency Updated:
  xulrunner.i686 0:10.0.6-1.el6.centos

Complete!

Lệnh trên sẽ yêu cầu xác nhận trước khi cài đặt bất kỳ gói nào trên hệ thống của bạn. Nếu bạn muốn cài đặt gói tự động mà không cần xác nhận, hãy sử dụng tùy chọn -y như ví dụ dưới đây.

# yum -y install firefox

2. Gỡ bỏ gói bằng YUM

Để gỡ bỏ một gói hoàn toàn với tất cả các phụ thuộc, chỉ cần chạy lệnh sau đây.

# yum remove firefox
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package firefox.i686 0:10.0.6-1.el6.centos set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================
 Package                    Arch        Version                        Repository            Size        
====================================================================================================
Removing:
 firefox                    i686        10.0.6-1.el6.centos            @updates              23 M

Transaction Summary
====================================================================================================
Remove        1 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing        : firefox-10.0.6-1.el6.centos.i686                                                                                                                          1/1

Removed:
  firefox.i686 0:10.0.6-1.el6.centos

Complete!

Tương tự, lệnh trên sẽ yêu cầu xác nhận trước khi gỡ bỏ một gói. Để vô hiệu hóa lời nhắc xác nhận, chỉ cần thêm tùy chọn -y như ví dụ dưới đây.

# yum -y remove firefox

3. Cập nhật gói sử dụng YUM command

Hãy tưởng tượng bạn có một phiên bản cũ của gói MySQL và bạn muốn cập nhật nó lên phiên bản ổn định mới nhất. Chỉ cần chạy lệnh sau đây, nó sẽ tự động giải quyết tất cả các vấn đề phụ thuộc và cài đặt chúng.

# yum update mysql
Loaded plugins: fastestmirror
Dependencies Resolved

============================================================================================================
 Package            Arch                Version                    Repository                    Size
============================================================================================================
Updating:
 vsftpd             i386                2.0.5-24.el5_8.1           updates                       144 k

Transaction Summary
============================================================================================================
Install       0 Package(s)
Upgrade       1 Package(s)

Total size: 144 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating       : vsftpd                                                                     1/2
  Cleanup        : vsftpd                                                                     2/2

Updated:
  vsftpd.i386 0:2.0.5-24.el5_8.1

Complete!

4. Liệt kê một gói sử dụng YUM

Sử dụng chức năng list để tìm kiếm một gói cụ thể theo tên. Ví dụ, để tìm kiếm một gói có tên OpenSSH, sử dụng lệnh sau đây.

# yum list openssh
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.neu.edu.cn
 * epel: mirror.neu.edu.cn
 * extras: mirror.neu.edu.cn
 * rpmforge: mirror.nl.leaseweb.net
 * updates: mirror.nus.edu.sg
Installed Packages
openssh.i386                                       4.3p2-72.el5_6.3                                                                      installed
Available Packages                                 4.3p2-82.el5                                                                          base

Để làm cho việc tìm kiếm của bạn chính xác hơn, xác định tên gói kèm theo phiên bản của chúng, trong trường hợp bạn biết. Ví dụ, để tìm kiếm một phiên bản cụ thể OpenSSH-4.3p2 của gói, sử dụng lệnh sau đây.

# yum list openssh-4.3p2

5. Tìm kiếm một gói bằng YUM command

Nếu bạn không nhớ chính xác tên của gói, hãy sử dụng chức năng tìm kiếm để tìm kiếm tất cả các gói có sẵn để tìm kiếm tên của gói mà bạn đã chỉ định. Ví dụ, để tìm kiếm tất cả các gói phù hợp với từ khóa.

# yum search vsftpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.neu.edu.cn
 * epel: mirror.neu.edu.cn
 * extras: mirror.neu.edu.cn
 * rpmforge: mirror.nl.leaseweb.net
 * updates: ftp.iitm.ac.in
============================== Matched: vsftpd ========================
ccze.i386 : A robust log colorizer
pure-ftpd-selinux.i386 : SELinux support for Pure-FTPD
vsftpd.i386 : vsftpd - Very Secure Ftp Daemon

6. Lấy thông tin về một gói bằng YUM

Cho rằng bạn muốn biết thông tin về một gói trước khi cài đặt nó. Để lấy thông tin về một gói, chỉ cần sử dụng lệnh sau đây.

# yum info firefox
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.neu.edu.cn
 * epel: mirror.neu.edu.cn
 * extras: mirror.neu.edu.cn
 * rpmforge: mirror.nl.leaseweb.net
 * updates: ftp.iitm.ac.in
Available Packages
Name       : firefox
Arch       : i386
Version    : 10.0.6
Release    : 1.el5.centos
Size       : 20 M
Repo       : updates
Summary    : Mozilla Firefox Web browser
URL        : http://www.mozilla.org/projects/firefox/
License    : MPLv1.1 or GPLv2+ or LGPLv2+
Description: Mozilla Firefox is an open-source web browser, designed for standards
           : compliance, performance and portability.

7. Liệt kê tất cả các gói có sẵn sử dụng YUM

Để liệt kê tất cả các gói có sẵn trong cơ sở dữ liệu Yum, sử dụng lệnh dưới đây.

# yum list | less

8. Liệt kê tất cả các gói đã cài đặt sử dụng YUM

Để liệt kê tất cả các gói đã cài đặt trên hệ thống, chỉ cần chạy lệnh dưới đây, nó sẽ hiển thị tất cả các gói đã cài đặt.

# yum list installed | less

9. Yum cung cấp chức năng

Chức năng Yum provides được sử dụng để tìm gói nào chứa một tập tin cụ thể. Ví dụ, nếu bạn muốn biết tên gói chứa tập tin /etc/httpd/conf/httpd.conf.

# yum provides /etc/httpd/conf/httpd.conf
Loaded plugins: fastestmirror
httpd-2.2.3-63.el5.centos.i386 : Apache HTTP Server
Repo        : base
Matched from:
Filename    : /etc/httpd/conf/httpd.conf

httpd-2.2.3-63.el5.centos.1.i386 : Apache HTTP Server
Repo        : updates
Matched from:
Filename    : /etc/httpd/conf/httpd.conf

httpd-2.2.3-65.el5.centos.i386 : Apache HTTP Server
Repo        : updates
Matched from:
Filename    : /etc/httpd/conf/httpd.conf

httpd-2.2.3-53.el5.centos.1.i386 : Apache HTTP Server
Repo        : installed
Matched from:
Other       : Provides-match: /etc/httpd/conf/httpd.conf

10. Kiểm tra các bản cập nhật có sẵn bằng Yum

Để xem có bao nhiêu gói đã cài đặt trên hệ thống của bạn có cập nhật mới có sẵn, hãy kiểm tra bằng cách sử dụng lệnh sau đây.

# yum check-update

11. Cập nhật hệ thống bằng Yum command

Để duy trì hệ thống của bạn luôn cập nhật với tất cả các bản vá và cập nhật gói nhị phân, chạy lệnh sau đây. Nó sẽ cài đặt tất cả các bản vá và cập nhật bảo mật mới nhất cho hệ thống của bạn.

# yum update

12. Liệt kê tất cả các gói nhóm có sẵn

Trong Linux, một số gói được nhóm vào một nhóm cụ thể. Thay vì cài đặt từng gói individually bằng yum, bạn có thể cài đặt một nhóm cụ thể sẽ cài đặt tất cả các gói liên quan thuộc về nhóm đó. Ví dụ, để liệt kê tất cả các nhóm có sẵn, chỉ cần chạy lệnh sau đây.

# yum grouplist
Installed Groups:
   Administration Tools
   DNS Name Server
   Dialup Networking Support
   Editors
   Engineering and Scientific
   FTP Server
   Graphics
   Java Development
   Legacy Network Server
Available Groups:
   Authoring and Publishing
   Base
   Beagle
   Cluster Storage
   Clustering
   Development Libraries
   Development Tools
   Eclipse
   Educational Software
   KDE (K Desktop Environment)
   KDE Software Development

13. Cài đặt gói nhóm

Để cài đặt một nhóm gói cụ thể, chúng ta sử dụng tùy chọn groupinstall. Ví dụ, để cài đặt "MySQL Database", chỉ cần thực hiện lệnh dưới đây.

# yum groupinstall 'MySQL Database'
Dependencies Resolved

=================================================================================================
Package								Arch      Version			 Repository        Size
=================================================================================================
Updating:
 unixODBC                           i386      2.2.11-10.el5      base              290 k
Installing for dependencies:
 unixODBC-libs                      i386      2.2.11-10.el5      base              551 k

Transaction Summary
=================================================================================================
Install       1 Package(s)
Upgrade       1 Package(s)

Total size: 841 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : unixODBC-libs	1/3
  Updating       : unixODBC         2/3
  Cleanup        : unixODBC         3/3

Dependency Installed:
  unixODBC-libs.i386 0:2.2.11-10.el5

Updated:
  unixODBC.i386 0:2.2.11-10.el5

Complete!

14. Cập nhật gói nhóm

Để cập nhật bất kỳ gói nhóm đã cài đặt nào, chỉ cần chạy lệnh sau đây như dưới đây.

# yum groupupdate 'DNS Name Server'

Dependencies Resolved
================================================================================================================
 Package			Arch	        Version				Repository           Size
================================================================================================================
Updating:
 bind                           i386            30:9.3.6-20.P1.el5_8.2          updates              981 k
 bind-chroot                    i386            30:9.3.6-20.P1.el5_8.2          updates              47 k
Updating for dependencies:
 bind-libs                      i386            30:9.3.6-20.P1.el5_8.2          updates              864 k
 bind-utils                     i386            30:9.3.6-20.P1.el5_8.2          updates              174 k

Transaction Summary
================================================================================================================
Install       0 Package(s)
Upgrade       4 Package(s)

Total size: 2.0 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating       : bind-libs            1/8
  Updating       : bind                 2/8
  Updating       : bind-chroot          3/8
  Updating       : bind-utils           4/8
  Cleanup        : bind                 5/8
  Cleanup        : bind-chroot          6/8
  Cleanup        : bind-utils           7/8
  Cleanup        : bind-libs            8/8

Updated:
  bind.i386 30:9.3.6-20.P1.el5_8.2                  bind-chroot.i386 30:9.3.6-20.P1.el5_8.2

Dependency Updated:
  bind-libs.i386 30:9.3.6-20.P1.el5_8.2             bind-utils.i386 30:9.3.6-20.P1.el5_8.2

Complete!

15. Gỡ bỏ gói nhóm

Để xóa hoặc gỡ bỏ một nhóm đã cài đặt từ hệ thống, chỉ cần sử dụng lệnh dưới đây.

# yum groupremove 'DNS Name Server'

Dependencies Resolved

===========================================================================================================
 Package                Arch              Version                         Repository          Size
===========================================================================================================
Removing:
 bind                   i386              30:9.3.6-20.P1.el5_8.2          installed           2.1 M
 bind-chroot            i386              30:9.3.6-20.P1.el5_8.2          installed           0.0

Transaction Summary
===========================================================================================================
Remove        2 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing        : bind                                                   1/2
warning: /etc/sysconfig/named saved as /etc/sysconfig/named.rpmsave
  Erasing        : bind-chroot                                            2/2

Removed:
  bind.i386 30:9.3.6-20.P1.el5_8.2                                        bind-chroot.i386 30:9.3.6-20.P1.el5_8.2

Complete!

16. Liệt kê các kho lưu trữ Yum được kích hoạt

Để liệt kê tất cả các kho lưu trữ Yum được kích hoạt trên hệ thống của bạn, sử dụng tùy chọn sau.

# yum repolist

repo id                     repo name                                            status
base                        CentOS-5 - Base                                      enabled:  2,725
epel                        Extra Packages for Enterprise Linux 5 - i386         enabled:  5,783
extras                      CentOS-5 - Extras                                    enabled:    282
mod-pagespeed               mod-pagespeed                                        enabled:      1
rpmforge                    RHEL 5 - RPMforge.net - dag                          enabled: 11,290
updates                     CentOS-5 - Updates                                   enabled:    743
repolist: 20,824

16. Liệt kê tất cả các kho lưu trữ Yum được bật và tắt

Lệnh sau sẽ hiển thị tất cả các kho lưu trữ yum được bật và tắt trên hệ thống.

# yum repolist all

repo id                     repo name                                            status
C5.0-base                   CentOS-5.0 - Base                                    disabled
C5.0-centosplus             CentOS-5.0 - Plus                                    disabled
C5.0-extras                 CentOS-5.0 - Extras                                  disabled
base                        CentOS-5 - Base                                      enabled:  2,725
epel                        Extra Packages for Enterprise Linux 5 - i386         enabled:  5,783
extras                      CentOS-5 - Extras                                    enabled:    282
repolist: 20,824

17. Cài đặt gói từ một kho lưu trữ cụ thể

Để cài đặt một gói cụ thể từ một kho lưu trữ đã kích hoạt hoặc tắt cụ thể, bạn phải sử dụng tùy chọn --enablerepo trong lệnh yum của bạn. Ví dụ, để cài đặt gói PhpMyAdmin, chỉ cần thực hiện lệnh sau đây.

# yum --enablerepo=epel install phpmyadmin

Dependencies Resolved
=============================================================================================
 Package                Arch           Version            Repository           Size
=============================================================================================
Installing:
 phpMyAdmin             noarch         3.5.1-1.el6        epel                 4.2 M

Transaction Summary
=============================================================================================
Install       1 Package(s)

Total download size: 4.2 M
Installed size: 17 M
Is this ok [y/N]: y
Downloading Packages:
phpMyAdmin-3.5.1-1.el6.noarch.rpm                       | 4.2 MB     00:25
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : phpMyAdmin-3.5.1-1.el6.noarch             1/1
  Verifying  : phpMyAdmin-3.5.1-1.el6.noarch             1/1

Installed:
  phpMyAdmin.noarch 0:3.5.1-1.el6

Complete!

18. Yum Shell tương tác

Tiện ích Yum cung cấp một shell tùy chỉnh nơi bạn có thể thực thi nhiều lệnh.

# yum shell
Loaded plugins: fastestmirror
Setting up Yum Shell
> update httpd
Loading mirror speeds from cached hostfile
 * base: mirrors.sin3.sg.voxel.net
 * epel: ftp.riken.jp
 * extras: mirrors.sin3.sg.voxel.net
 * updates: mirrors.sin3.sg.voxel.net
Setting up Update Process
>

19. Xóa bộ nhớ cache Yum

Theo mặc định, yum giữ tất cả các dữ liệu gói lưu trữ đã kích hoạt trong thư mục /var/cache/yum/ với mỗi thư mục con, để xóa tất cả các tệp cache từ kho lưu trữ đã kích hoạt, bạn cần chạy lệnh sau đây thường xuyên để dọn dẹp bộ nhớ cache và đảm bảo không có không gian không cần thiết được sử dụng. Chúng tôi không muốn cung cấp đầu ra của lệnh dưới đây, vì chúng tôi muốn giữ dữ liệu cache như vậy.

# yum clean all

20. Xem lịch sử của Yum

Để xem tất cả các giao dịch trước của lệnh yum, chỉ cần sử dụng lệnh sau đây.

# yum history

Loaded plugins: fastestmirror
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    10 | root               | 2012-08-11 15:19 | Install        |    3
     9 | root               | 2012-08-11 15:11 | Install        |    1
     8 | root               | 2012-08-11 15:10 | Erase          |    1 EE
     7 | root               | 2012-08-10 17:44 | Install        |    1
     6 | root               | 2012-08-10 12:19 | Install        |    2
     5 | root               | 2012-08-10 12:14 | Install        |    3
     4 | root               | 2012-08-10 12:12 | I, U           |   13 E<
     3 | root               | 2012-08-09 13:01 | Install        |    1 >
     2 | root               | 2012-08-08 20:13 | I, U           |  292 EE
     1 | System            | 2012-08-08 17:15 | Install        |  560
history list

Kết luận

Chúng tôi đã cố gắng liệt kê tất cả các yum command cơ bản và nâng cao cùng với các ví dụ của chúng. Việc nắm vững các yum command là chìa khóa để quản lý gói một cách hiệu quả trên hệ thống Linux của bạn. Từ việc cài đặt, cập nhật, xóa bỏ gói đến tìm kiếm và hiển thị thông tin chi tiết, yum command cung cấp một loạt các công cụ mạnh mẽ để đơn giản hóa quản lý gói và duy trì hệ thống của bạn. Hãy tận dụng những tiện ích mà yum command mang lại để đảm bảo rằng hệ thống của bạn luôn ổn định và an toàn.