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.