Trong bài viết này, chúng ta sẽ xem xét trình quản lý gói YUM cho phép quản lý cài đặt, gỡ bỏ và cập nhật chương trình (gói RPM), tự động giải quyết phụ thuộc và quản lý kho bổ sung. Bài viết sẽ hữu ích cho quản trị viên Linux mới bắt đầu như một cheat sheet yum.
Yum (Yellowdog Updater Modified) là trình quản lý gói console cho các bản phân phối Linux dựa trên gói RPM (RedHat Package Manager). Các hệ điều hành phổ biến bao gồm RedHat, CentOS, Fedora, Oracle Linux, Scientific Linux.
Cài đặt, cập nhật và gỡ bỏ gói bằng YUM
Bắt đầu từ đâu? Giống như mọi trường hợp, hãy bắt đầu từ trợ giúp:
yum help — trợ giúp đầy đủ về yum
Tôi sẽ nhấn mạnh các lệnh yum phổ biến nhất:
yum clean all— dọn dẹp cache tất cả gói (thường dùng khi có vấn đề với yum)yum makecache— tạo lại cache góiyum repolist— hiển thị danh sách tất cả kho đã kết nối, đầu ra trông như sau:
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: * extras: * updates: repo id repo name status base/7/x86_64 CentOS-7 - Base 10,019 extras/7/x86_64 CentOS-7 - Extras 435 updates/7/x86_64 CentOS-7 - Updates 2,500 repolist: 12,954
Tôi chỉ có kho tiêu chuẩn CentOS 7 trên hệ thống: Base, Extras và Updates.
yum list available— hiển thị danh sách tất cả gói có sẵn để cài đặt.yum list installed— hiển thị danh sách tất cả gói đã cài đặt trong hệ thống.yum list kernel— hiển thị danh sách gói liên quan đến nhân Linux.
Bạn có thể kiểm tra xem một gói cụ thể có được cài đặt trên máy chủ CentOS hay không (ví dụ, kiểm tra trạng thái gói apache):
yum list installed httpd
Installed Packages httpd.x86_64 2.4.6-89.el7.centos.1 @updates
Bạn có thể lấy thông tin chi tiết về một gói cụ thể. Ví dụ, hãy lấy thêm thông tin về gói MariaDB:
yum info mariadb

Để cài đặt gói, dùng yum install. Để cài máy chủ web apache, chạy lệnh:
yum install httpd
Nếu bạn thấy lỗi "Traceback (most recent call last):thread.error: can’t start new thread" khi chạy bất kỳ lệnh yum nào, có thể máy chủ của bạn không đủ RAM. Hãy thử thêm RAM hoặc tắt plugin yum (chỉ định plugins=0 trong /etc/yum.conf).
Trước khi cài gói, bạn có thể kiểm tra phụ thuộc của nó bằng lệnh:
yum deplist httpd
Nếu bạn muốn cài gói nhưng quên tên đầy đủ, bạn có thể dùng ký tự đại diện *. Ví dụ:
yum install epel-*
Resolving Dependencies --> Running transaction check ---> Package epel-release.noarch 0:7-11 will be installed --> Finished Dependency Resolution Install 1 Package Total download size: 15 k Installed size: 24 k Is this ok [y/d/N]:
Nếu bạn chỉ nhập:
yum install epel
No package epel available. Error: Nothing to do
Bạn sẽ không thấy gói nào khả dụng.
Yum có thể cài nhiều gói cùng lúc:
yum install httpd php wget rsyslog
Để cài lại gói:
yum reinstall proftpd
Để gỡ bỏ gói đã cài đặt bằng yum, dùng tham số remove:
yum remove httpd
Trước khi gỡ bất kỳ gói nào, khuyến khích kiểm tra phụ thuộc (có gói khiến gỡ các gói khác khi bạn cố gắng gỡ chúng).
yum deplist proftpd

Để tìm gói theo tên hoặc mô tả:
yum search nginx
Sử dụng tùy chọn provides, bạn có thể tìm gói chứa file cụ thể, ví dụ:
yum provides */squid.conf
Để cập nhật tất cả gói đã cài đặt, chạy lệnh:
yum update
Bạn có thể cập nhật gói theo tên:
yum update php
Bạn có thể kiểm tra xem có cập nhật nào cho hệ thống không bằng lệnh:
yum check-update
Để lấy thông tin về cập nhật bảo mật:
yum updateinfo list security
Trong một số trường hợp, vấn đề có thể xảy ra sau khi bạn cập nhật gói hoặc dịch vụ. Ví dụ, trang web của bạn ngừng hoạt động sau khi cập nhật phiên bản php. Bạn có thể quay lại phiên bản gói trước bằng yum:
yum downgrade php
Bạn cũng có thể dùng cài đặt nhóm gói với grouplist. Trong kho có một số nhóm gói được định nghĩa trước với các bộ chương trình khác nhau. Bạn có thể hiển thị danh sách các nhóm này:
yum grouplist
Hãy xem cách nó hoạt động trên ví dụ danh sách "Basic Web Server". Để biết thêm về nhóm và các gói của nó:
yum groupinfo "Basic Web Server"

Sau kiểm tra, chúng ta thấy bộ gói và dịch vụ cho máy chủ web sẽ được cài đặt.
Đây là một nhóm hữu ích khác — "System Administration Tools":
yum groupinfo "System Administration Tools"

Như bạn thấy, danh sách chứa công cụ giám sát và gỡ lỗi.
Bạn có thể cài đặt nhóm bằng lệnh:
yum groupinstall "System Administration Tools"
Các gói đã cài sẽ xuất hiện trong một khối riêng ("Installed Groups"):

Sử dụng lệnh YUM History
Bạn có thể hiển thị lịch sử cài đặt yum (danh sách giao dịch) bằng:
yum history list
Đầu ra gồm 5 cột, cột đầu tiên hiển thị ID giao dịch bạn có thể dùng để xem chi tiết giao dịch (gói đã cài, phụ thuộc).
Ví dụ:
yum history info 10

Hơn nữa, bạn có thể hoàn tác giao dịch bằng lệnh:
yum history undo 10
Trong trường hợp của tôi, 4 gói sẽ bị gỡ:

Bạn có thể xem thông tin về cài đặt/gỡ gói yum trong /var/log/yum.log:
cat /var/log/yum.log
Các tùy chọn lệnh YUM hữu ích
Yum có một số tùy chọn hữu ích bạn có thể thường cần để quản lý gói. Dùng tùy chọn -y để ẩn tất cả đầu ra yum trừ lỗi. Ví dụ:
yum update -y
yum install httpd -y
Để nói không với yêu cầu, dùng tùy chọn:
--assumeno
Để dùng yum không có plugin hoặc tắt một plugin, dùng tham số:
--noplugins
--disableplugin=fastestmirror
Để bật plugin đã tắt:
--enableplugin=fastestmirror
Để dùng kho đã tắt:
yum update --enablerepo=atomic
Để tắt một kho cụ thể trong yum:
yum update --disablerepo=atomic
File cấu hình YUM /etc/yum.conf
File cấu hình YUM là /etc/yum.conf.
Các tham số chính của file cấu hình:
- cachedir — cache gói cục bộ (mặc định, /var/cache/yum)
- logfile — đường dẫn đến file log yum
- obsoletes — có cập nhật gói lỗi thời không (1 — có, 0 — không)
- gpgcheck — xác minh gói trước khi cài đặt (1 — có, 0 — không)
- keepcache — có giữ cache không (1 — có, 0 — không)
- cachedir — thư mục lưu cache yum (mặc định, /var/cache/yum)
- debuglevel — mức gỡ lỗi 1-10
- plugins — bật plugin yum (1 — có, 0 — không)
- bugtracker_url — liên kết nơi lỗi yum sẽ được đăng ký
- installonly_limit — số lượng phiên bản tối đa có thể cài cho một gói
Các Plugin YUM hữu ích
Tại sao cần plugin trong yum? Giống như mọi nơi, chúng làm cho công việc của chúng ta dễ dàng hơn.
Dưới đây là một số plugin phổ biến và mô tả:
- yum-plugin-fastestmirror — đo tốc độ mirror và đề xuất mirror nhanh nhất để cài gói.
- yum-plugin-security — cung cấp danh sách chỉ cập nhật bảo mật.
- yum-plugin-keys — cho phép sử dụng tham số keys, keys-info, keys-data, keys-remove
- yum-plugin-versionlock — ngăn chặn các gói được chọn khỏi việc cập nhật
Thư mục chứa tất cả plugin là /etc/yum/.
Để hiển thị danh sách plugin yum có sẵn, chạy lệnh:
yum search yum-plugin
======================================================================= N/S matched: yum-plugin ======================================================================= PackageKit-yum-plugin.x86_64 : Tell PackageKit to check for updates when yum exits fusioninventory-agent-yum-plugin.noarch : Ask FusionInventory agent to send an inventory when yum exits kabi-yum-plugins.noarch : The CentOS Linux kernel ABI yum plugin yum-plugin-aliases.noarch : Yum plugin to enable aliases filters yum-plugin-auto-update-debug-info.noarch : Yum plugin to enable automatic updates to installed debuginfo packages yum-plugin-changelog.noarch : Yum plugin for viewing package changelogs before/after updating yum-plugin-copr.noarch : Yum plugin to add copr command yum-plugin-fastestmirror.noarch : Yum plugin which chooses fastest repository from a mirrorlist yum-plugin-filter-data.noarch : Yum plugin to list filter based on package data yum-plugin-fs-snapshot.noarch : Yum plugin to automatically snapshot your filesystems during updates yum-plugin-keys.noarch : Yum plugin to deal with signing keys yum-plugin-list-data.noarch : Yum plugin to list aggregate package data yum-plugin-local.noarch : Yum plugin to automatically manage a local repo. of downloaded packages yum-plugin-merge-conf.noarch : Yum plugin to merge configuration changes when installing packages yum-plugin-ovl.noarch : Yum plugin to work around overlayfs issues yum-plugin-post-transaction-actions.noarch : Yum plugin to run arbitrary commands when certain pkgs are acted on yum-plugin-pre-transaction-actions.noarch : Yum plugin to run arbitrary commands when certain pkgs are acted on yum-plugin-priorities.noarch : plugin to give priorities to packages from different repos yum-plugin-protectbase.noarch : Yum plugin to protect packages from certain repositories. yum-plugin-ps.noarch : Yum plugin to look at processes, with respect to packages yum-plugin-remove-with-leaves.noarch : Yum plugin to remove dependencies which are no longer used because of a removal yum-plugin-rpm-warm-cache.noarch : Yum plugin to access the rpmdb files early to warm up access to the db yum-plugin-show-leaves.noarch : Yum plugin which shows newly installed leaf packages yum-plugin-tmprepo.noarch : Yum plugin to add temporary repositories yum-plugin-tsflags.noarch : Yum plugin to add tsflags by a commandline option yum-plugin-upgrade-helper.noarch : Yum plugin to help upgrades to the next distribution version yum-plugin-verify.noarch : Yum plugin to add verify command, and options yum-plugin-versionlock.noarch : Yum plugin to lock specified packages from being updated
Bạn có thể cài plugin bằng yum install như bất kỳ gói nào khác:
yum install yum-plugin-changelog
yum -y install yum-versionlock
Để chặn cập nhật gói bằng plugin, chạy lệnh:
yum versionlock nginx
Để hiển thị danh sách gói bị chặn:
yum versionlock list
Để xóa gói khỏi danh sách chặn:
yum versionlock delete nginx

Nếu bạn không muốn dùng plugin, bạn có thể tắt nó bằng cách thêm tùy chọn sau vào lệnh yum:
--disableplugin=fastestmirror
Hoặc bạn có thể tắt tất cả plugin yum:
--noplugins
Cách cấu hình Proxy cho YUM?
Yum sử dụng giao thức HTTP/1.1 để tương tác với kho gói. Nếu máy chủ Linux của bạn chỉ truy cập Internet qua máy chủ proxy HTTP, bạn có thể chỉ định tên máy chủ proxy trong phần [main] của file /etc/yum.conf:
proxy=https://proxy_server_name:3128
Nếu máy chủ proxy yêu cầu xác thực, thêm các dòng sau:
proxy_username=proxy_user proxy_password=proxy_user_passw0rd
Để đảm bảo yum hoạt động qua proxy, dùng lệnh:
yum clean all && yum search nginx
Để kiểm tra, tôi đã chỉ định địa chỉ proxy công cộng Đức, và plugin fastestmirror được kích hoạt trong quá trình cài đặt và tìm thấy mirror với tốc độ nhanh nhất:

Nếu bạn muốn dùng proxy chỉ cho một số kho, bạn không cần thay đổi file /etc/yum.conf. Bạn có thể chỉ định cài đặt proxy trong file cấu hình kho /etc/yum.repos.d/your_config.repo.
Vậy là chúng ta đã xem xét các tính năng cơ bản của yum, trình quản lý gói RPM, trong Linux CentOS/RHEL. Trong bài tiếp theo, chúng ta sẽ chỉ cách quản lý kho YUM/DNF chi tiết hơn.