Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

การใช้งาน YUM Package Manager บน CentOS และ RHEL

ในบทความนี้ เราจะพิจารณา YUM package manager ที่ช่วยจัดการการติดตั้ง ลบ และอัปเดตโปรแกรม (RPM packages) แก้ไข dependencies อัตโนมัติ และจัดการ additional repositories บทความนี้จะเป็นประโยชน์สำหรับ Linux administrators ใหม่ๆ เป็น yum cheat sheet

Yum (Yellowdog Updater Modified) เป็น console package manager สำหรับ Linux distros ที่ใช้ RPM packages (RedHat Package Manager) รวมถึง OS ยอดนิยมอย่าง RedHat, CentOS, Fedora, Oracle Linux, Scientific Linux

การติดตั้ง อัปเดต และลบแพ็กเกจด้วย YUM

เริ่มจากอะไรดี? เหมือนทุกกรณี เริ่มจาก help:

yum help – ความช่วยเหลือเต็มรูปแบบของ yum

ผมจะเน้นคำสั่ง yum ยอดนิยมที่สุด:

yum clean all – ล้าง cache ของแพ็กเกจทั้งหมด (ใช้เมื่อมีปัญหากับ yum)

yum makecache – สร้าง package cache ใหม่

yum repolist – แสดงรายการ repositories ที่เชื่อมต่อทั้งหมด ผลลัพธ์ประมาณนี้:

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

ระบบของผมมีแค่ standard CentOS 7 repositories: Base, Extras และ Updates

yum list available – แสดงรายการแพ็กเกจทั้งหมดที่พร้อมติดตั้ง

yum list installed – แสดงรายการแพ็กเกจที่ติดตั้งในระบบทั้งหมด

yum list kernel – แสดงรายการแพ็กเกจที่เกี่ยวกับ Linux kernel

สามารถตรวจสอบว่าแพ็กเกจเฉพาะติดตั้งบน CentOS server หรือไม่ (เช่น ตรวจสอบ apache package):

yum list installed httpd

Installed Packages httpd.x86_64 2.4.6-89.el7.centos.1 @updates

สามารถดูข้อมูลรายละเอียดของแพ็กเกจเฉพาะได้ ตัวอย่าง ดูข้อมูล MariaDB package:

yum info mariadb

การใช้งาน YUM Package Manager บน CentOS และ RHEL

เพื่อติดตั้งแพ็กเกจ ใช้ yum install ติดตั้ง apache web server:

yum install httpd

หากเจอ error "Traceback (most recent call last):thread.error: can’t start new thread" เวลารันคำสั่ง yum ใดๆ น่าจะเป็น RAM ไม่พอ ลองเพิ่ม RAM หรือปิด yum plugins (ระบุ plugins=0 ใน /etc/yum.conf)

ก่อนติดตั้งแพ็กเกจ สามารถตรวจสอบ dependencies ได้ด้วย:

yum deplist httpd

หากต้องการติดตั้งแพ็กเกจแต่ลืมชื่อเต็ม ใช้ wildcard * เช่น:

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]: 

หากพิมพ์แค่:

yum install epel

No package epel available. Error: Nothing to do

จะไม่เห็นแพ็กเกจ available

Yum ติดตั้งหลายแพ็กเกจพร้อมกันได้:

yum install httpd php wget rsyslog

เพื่อ reinstall แพ็กเกจ:

yum reinstall proftpd

เพื่อลบแพ็กเกจที่ติดตั้งแล้วด้วย yum ใช้ parameter remove:

yum remove httpd

ก่อนลบแพ็กเกจใดๆ แนะนำให้ตรวจสอบ dependencies (มีแพ็กเกจที่ทำให้แพ็กเกจอื่นถูกลบติดตามเมื่อพยายามลบ)

yum deplist proftpd

การใช้งาน YUM Package Manager บน CentOS และ RHEL

เพื่อค้นหาแพ็กเกจด้วยชื่อหรือคำอธิบาย:

yum search nginx

ใช้ option provides เพื่อหาแพ็กเกจที่มีไฟล์เฉพาะ เช่น:

yum provides */squid.conf

เพื่ออัปเดตแพ็กเกจที่ติดตั้งทั้งหมด:

yum update

สามารถอัปเดตแพ็กเกจโดยชื่อ:

yum update php

ตรวจสอบว่ามีอัปเดตสำหรับระบบหรือไม่:

yum check-update

เพื่อดูข้อมูล security updates:

yum updateinfo list security

บางครั้งอาจมีปัญหาหลังอัปเดตแพ็กเกจหรือ service เช่นเว็บไซต์หยุดทำงานหลังอัปเดต php version สามารถ roll back กลับเวอร์ชันก่อนหน้าด้วย yum:

yum downgrade php

ยังสามารถใช้ group installation ด้วย grouplist มี predefined package groups พร้อมชุดโปรแกรมต่างๆ ใน repository แสดงรายการ groups:

yum grouplist

ลองดูตัวอย่าง "Basic Web Server" list ดูรายละเอียด group และแพ็กเกจ:

yum groupinfo "Basic Web Server"

การใช้งาน YUM Package Manager บน CentOS และ RHEL

หลังตรวจสอบ พบว่าชุดแพ็กเกจและ services สำหรับ web server จะถูกติดตั้ง

อีก group list ที่มีประโยชน์ — "System Administration Tools":

yum groupinfo "System Administration Tools"

การใช้งาน YUM Package Manager บน CentOS และ RHEL

เห็นได้ว่ามี monitoring และ debugging tools

ติดตั้ง group list ด้วยคำสั่ง:

yum groupinstall "System Administration Tools"

แพ็กเกจที่ติดตั้งจะปรากฏในบล็อกแยก ("Installed Groups"):

การใช้งาน YUM Package Manager บน CentOS และ RHEL

การใช้คำสั่ง YUM History

สามารถแสดงประวัติการติดตั้ง yum (รายการ transactions) ด้วย:

yum history list

เอาต์พุทประกอบ 5 คอลัมน์ คอลัมน์แรกแสดง transaction ID ใช้ดูรายละเอียด transaction (แพ็กเกจที่ติดตั้ง, dependencies)

ตัวอย่าง:

yum history info 10

การใช้งาน YUM Package Manager บน CentOS และ RHEL

นอกจากนี้ สามารถ undo transaction ได้ด้วยคำสั่ง:

yum history undo 10

ในกรณีของผม จะมี 4 packages ถูกลบ:

การใช้งาน YUM Package Manager บน CentOS และ RHEL

สามารถดูข้อมูลการติดตั้ง/ลบ yum packages ใน /var/log/yum.log:

cat /var/log/yum.log

ตัวเลือกคำสั่ง YUM ที่มีประโยชน์

Yum มี options ที่มีประโยชน์บางอย่างสำหรับจัดการแพ็กเกจ ใช้ -y เพื่อปิด output ทั้งหมดยกเว้น errors เช่น:

yum update -y yum install httpd -y

เพื่อตอบ no ให้ใช้ option:

--assumeno

เพื่อใช้ yum โดยไม่มี plugins หรือปิด plugin หนึ่ง ใช้ parameters:

--noplugins
--disableplugin=fastestmirror

เพื่อ enable plugin ที่ปิดไว้:

--enableplugin=fastestmirror

เพื่อใช้ repo ที่ปิดอยู่:

yum update --enablerepo=atomic

เพื่อปิด repository เฉพาะใน yum:

yum update --disablerepo=atomic

ไฟล์การกำหนดค่า YUM /etc/yum.conf

ไฟล์ config YUM คือ /etc/yum.conf

พารามิเตอร์หลักของ config file:

  • cachedir– local package cache (ค่าเริ่มต้น /var/cache/yum)
  • logfile— path ไปยัง yum log file
  • obsoletes — อัปเดต obsolete packages หรือไม่ (1 — ใช่, 0 — ไม่)
  • gpgcheck — verify package ก่อนติดตั้ง (1 — ใช่, 0 — ไม่)
  • keepcache — เก็บ cache หรือไม่ (1 — ใช่, 0 — ไม่)
  • cachedir — ไดเรกทอรีเก็บ yum cache (ค่าเริ่มต้น /var/cache/yum)
  • debuglevel – debug level 1-10
  • plugins — enable yum plugins (1 — ใช่, 0 — ไม่)
  • bugtracker_url – ลิงก์ที่จะบันทึก yum errors
  • installonly_limit – จำนวนเวอร์ชันสูงสุดที่ติดตั้งได้สำหรับแพ็กเกจเดียว

YUM Plugins ที่มีประโยชน์

ทำไมต้องมี plugins ใน yum? เหมือนทุกที่ มันทำให้งานง่ายขึ้น

นี่คือ plugins ยอดนิยมและคำอธิบาย:

yum-plugin-fastestmirror – วัดความเร็ว mirror และเสนอที่เร็วที่สุดเพื่อติดตั้งแพ็กเกจ

yum-plugin-security — ให้รายการ security updates เท่านั้น

yum-plugin-keys — อนุญาตให้ใช้ keys, keys-info, keys-data, keys-remove parameters

ไดเรกทอรีที่เก็บ plugins ทั้งหมดคือ /etc/yum/

yum-plugin-versionlock – ป้องกันไม่ให้แพ็กเกจที่เลือกอัปเดต

เพื่อแสดงรายการ yum plugins ที่มี:

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 

สามารถติดตั้ง plugin ด้วย yum install เหมือนแพ็กเกจอื่น:

yum install yum-plugin-changelog
yum -y install yum-versionlock

เพื่อบล็อกการอัปเดตแพ็กเกจด้วย plugin ให้รัน:

yum versionlock nginx

เพื่อแสดงรายการแพ็กเกจที่ถูกบล็อก:

yum versionlock list

เพื่อลบแพ็กเกจออกจากรายการบล็อก:

yum versionlock delete nginx

การใช้งาน YUM Package Manager บน CentOS และ RHEL

หากไม่ต้องการใช้ plugin สามารถปิดได้ด้วย option ในคำสั่ง yum:

--disableplugin=fastestmirror

หรือปิด yum plugins ทั้งหมด:

--noplugins

วิธีกำหนดค่า Proxy สำหรับ YUM?

Yum ใช้ HTTP/1.1 protocol ติดต่อกับ package repositories หาก Linux server ของคุณเข้าถึง Internet ได้เฉพาะผ่าน HTTP proxy server สามารถระบุชื่อ proxy server ใน section [main] ของ /etc/yum.conf:

proxy=https://proxy_server_name:3128

หาก proxy server ต้องการ authentication ให้เพิ่มบรรทัด:

proxy_username=proxy_user proxy_password=proxy_user_passw0rd

เพื่อตรวจสอบว่า yum ทำงานผ่าน proxy server ใช้คำสั่ง:

yum clean all && yum search nginx

เพื่อทดสอบ ผมระบุที่อยู่ German public proxy server และ fastestmirror plugin ทำงานระหว่างติดตั้งและพบ mirrors ที่เร็วที่สุด:

การใช้งาน YUM Package Manager บน CentOS และ RHEL

หากต้องการใช้ proxy เฉพาะบาง repositories ไม่ต้องแก้ /etc/yum.conf สามารถระบุ proxy settings ใน repository config file /etc/yum.repos.d/your_config.repo แทน

ดังนั้น เราได้พิจารณาคุณสมบัติพื้นฐานของ yum, RPM package manager, ใน Linux CentOS/ RHEL ในบทความหน้า จะแสดงวิธีจัดการ YUM/DNF repositories อย่างละเอียดขึ้น