ค้นหาเว็บไซต์

วิธีติดตั้งและใช้ 'yum-utils' เพื่อรักษา Yum และเพิ่มประสิทธิภาพ


ไม่ว่า Fedora จะเริ่มปรับใช้ dnf เป็นตัวจัดการแพ็คเกจใหม่และไลบรารีการจัดการแพ็คเกจเริ่มต้นก็ตาม มันจะไม่แทนที่ตัวจัดการแพ็คเกจ yum แบบเก่าที่ดีไปในทางที่ดีในการแจกแจงแยกส่วนอื่นๆ (เช่น Red Hat Enterprise Linux (RHEL) และ CentOS) จนกว่าจะได้รับการพิสูจน์แล้วว่าเชื่อถือได้พอๆ กับ yum และมั่นคงยิ่งขึ้น (อ้างอิงจาก Fedora Project wiki ณ วันที่ 15 พฤศจิกายน ปี 2015 dnf ยังอยู่ในสถานะที่ทดสอบได้) ดังนั้นทักษะ การจัดการ yum ของคุณจะให้บริการคุณได้ดีไปอีกระยะหนึ่ง

ด้วยเหตุนี้ ในคู่มือนี้ เราจะแนะนำให้คุณรู้จักกับ yum-utils ซึ่งเป็นชุดโปรแกรมอรรถประโยชน์ที่ผสานรวมกับ yum เพื่อขยายคุณสมบัติดั้งเดิมในหลายๆ ด้าน จึงทำให้มีประสิทธิภาพและใช้งานง่ายยิ่งขึ้น

การติดตั้ง yum-utils ใน RHEL/CentOS

Yum-utils รวมอยู่ใน repo พื้นฐาน (ซึ่งเปิดใช้งานตามค่าเริ่มต้น) ดังนั้นการติดตั้งในการแจกจ่ายแบบ Fedora ใดๆ ก็ตามก็ง่ายดายเหมือนทำ:

yum update && yum install yum-utils

ยูทิลิตี้ทั้งหมดที่ yum-utils มอบให้จะได้รับการติดตั้งโดยอัตโนมัติพร้อมกับแพ็คเกจหลัก ซึ่งเราจะอธิบายไว้ในส่วนถัดไป

สำรวจยูทิลิตี้ที่จัดทำโดยแพ็คเกจ yum-utils

เครื่องมือที่ yum-utils มอบให้นั้นแสดงอยู่ในหน้าคู่มือ:

man yum-utils

นี่คือยูทิลิตี้ yum 10 รายการที่เราคิดว่าคุณจะสนใจ:

1. ดีบักแพ็คเกจ

debuginfo-install <ชื่อแพ็คเกจ จะติดตั้งแพ็คเกจ debuginfo (และการขึ้นต่อกัน) ที่จำเป็นสำหรับการดีบัก <ชื่อแพ็คเกจ ในกรณีที่เกิดข้อขัดข้องหรือ ขณะพัฒนาแอพพลิเคชั่นที่ใช้แพ็คเกจบางตัว

ในการดีบั๊กแพ็คเกจ (หรือไฟล์ปฏิบัติการอื่น ๆ ) เราจะต้องติดตั้ง gdb (ดีบักเกอร์ GNU) และใช้เพื่อเริ่มโปรแกรมในโหมดดีบั๊ก

ตัวอย่างเช่น:

gdb $(which postfix)

คำสั่งดังกล่าวจะเริ่มต้น gdb shell ซึ่งเราสามารถพิมพ์การดำเนินการที่จะดำเนินการได้ ตัวอย่างเช่น run (ดังแสดงในภาพด้านล่าง) จะเริ่มโปรแกรม ในขณะที่ bt (ไม่แสดง) จะแสดงการติดตามสแต็ก (หรือที่เรียกว่า backtrace ) ของโปรแกรม ซึ่งจะแสดงรายการการเรียกใช้ฟังก์ชันที่นำไปสู่จุดหนึ่งในการทำงานของโปรแกรม (การใช้ข้อมูลนี้ ทั้งนักพัฒนาและผู้ดูแลระบบสามารถระบุได้ว่ามีอะไรผิดพลาดในกรณีที่เกิดข้อขัดข้อง)

การดำเนินการอื่นๆ ที่มีอยู่และผลลัพธ์ที่คาดหวังจะแสดงอยู่ใน man gdb

2. ค้นหาพื้นที่เก็บข้อมูลของแพ็คเกจที่ติดตั้ง

คำสั่งต่อไปนี้แสดงว่าที่เก็บใดที่แพ็คเกจที่ติดตั้งในปัจจุบัน ถูกติดตั้งจาก:

find-repos-of-install httpd postfix dovecot

หากทำงานโดยไม่มีอาร์กิวเมนต์ find-repos-of-install จะส่งคืนรายการแพ็คเกจที่ติดตั้งในปัจจุบันทั้งหมด

3. ลบแพ็คเกจที่ซ้ำกันหรือที่ถูกละเลย

การล้างแพ็คเกจ จัดการการล้างแพ็คเกจ การทำซ้ำ แพ็คเกจที่ถูกละเลย (โปรแกรมที่ติดตั้งจากแหล่งอื่นที่ไม่ใช่ที่เก็บที่กำหนดค่าไว้ในปัจจุบัน) และความไม่สอดคล้องกันในการอ้างอิงอื่น ๆ รวมถึงการลบเคอร์เนลเก่าดังที่แสดงในตัวอย่างต่อไปนี้:

package-cleanup --orphans
package-cleanup --oldkernels

คุณไม่ต้องกังวลกับคำสั่งสุดท้ายที่สร้างความเสียหายให้กับเคอร์เนลของคุณ มันจะส่งผลต่อแพ็คเกจเคอร์เนลเก่า (เวอร์ชันที่เก่ากว่าเวอร์ชันที่รันอยู่ในปัจจุบัน) ที่ไม่จำเป็นอีกต่อไป

4. ค้นหารายการการพึ่งพาแพ็คเกจ

repo-graph ส่งคืนรายการการพึ่งพาแพ็กเกจแบบเต็มในรูปแบบ จุด สำหรับแพ็คเกจทั้งหมดที่พร้อมใช้งานจากที่เก็บที่กำหนดค่า อีกทางหนึ่ง repo-graph สามารถส่งคืนข้อมูลเดียวกันตามพื้นที่เก็บข้อมูล หากใช้กับตัวเลือก --repoid=

ตัวอย่างเช่น มาดูการขึ้นต่อกันของแต่ละแพ็กเกจในพื้นที่เก็บข้อมูลการอัปเดต:

repo-graph --repoid=updates | less

ในคำสั่งข้างต้น เรากำลังส่งเอาต์พุตของ repo-graph ให้น้อยลงเพื่อให้เห็นภาพได้ง่ายขึ้น แต่คุณสามารถเปลี่ยนเส้นทางไปยังไฟล์ในเครื่องเพื่อตรวจสอบในภายหลังได้:

repo-graph --repoid=updates > updates-dependencies.txt

ไม่ว่าในกรณีใด เราจะเห็นว่าแพ็คเกจ iputils ขึ้นอยู่กับ systemd และ openssl-libs

5. ตรวจสอบรายการการพึ่งพาที่ไม่ได้รับการแก้ไข

repoclosure อ่านข้อมูลเมตาของที่เก็บที่กำหนดค่า ตรวจสอบการขึ้นต่อกันของแพ็คเกจที่รวมอยู่ในนั้น และแสดงรายการการขึ้นต่อกันที่ยังไม่ได้รับการแก้ไขสำหรับแต่ละแพ็คเกจ:

repoclosure

6. วิธีตรวจสอบแพ็คเกจใหม่ล่าสุดหรือเก่าที่สุดในไดเร็กทอรี

repomanage ค้นหาไดเรกทอรีด้วยแพ็คเกจ rpm และส่งคืนรายการแพ็คเกจใหม่ล่าสุดหรือเก่าที่สุดในไดเรกทอรี เครื่องมือนี้จะมีประโยชน์หากคุณมีไดเร็กทอรีที่คุณจัดเก็บแพ็คเกจ .rpm ของโปรแกรมต่างๆ ไว้หลายโปรแกรม

เมื่อดำเนินการโดยไม่มีอาร์กิวเมนต์ repomanage จะส่งกลับแพ็คเกจใหม่ล่าสุด หากรันด้วยแฟล็ก --old มันจะส่งคืนแพ็คเกจที่เก่าที่สุด:

ls -l
cd rpms
ls -l rpms
repomanage rpms

โปรดทราบว่าการเปลี่ยนชื่อแพ็คเกจ rpm จะไม่ส่งผลต่อวิธีการทำงานของ การจัดการใหม่

7. ค้นหา Yum Repositories เพื่อรับข้อมูลเกี่ยวกับแพ็คเกจ

repoquery ค้นหาที่เก็บ yum และรับข้อมูลเพิ่มเติมเกี่ยวกับแพ็คเกจ ไม่ว่าจะติดตั้งหรือไม่ก็ตาม (การขึ้นต่อกัน ไฟล์ที่รวมอยู่ในแพ็คเกจ และอื่นๆ)

ตัวอย่างเช่น ขณะนี้ยังไม่ได้ติดตั้ง htop (Linux Process Monitoring ) บนระบบนี้ ดังที่คุณเห็นด้านล่าง:

which htop
rpm -qa | grep htop

ตอนนี้ สมมติว่าเราต้องการแสดงรายการการขึ้นต่อกันของ htop พร้อมด้วยไฟล์ที่รวมอยู่ในการติดตั้งเริ่มต้น โดยดำเนินการตามคำสั่งสองคำสั่งต่อไปนี้ตามลำดับ:

repoquery --requires htop
repoquery --list htop

8. ดัมพ์แพ็คเกจ RPM ที่ติดตั้งทั้งหมดลงในไฟล์ Zip

yum-debug-dump ช่วยให้คุณสามารถดัมพ์รายการแพ็คเกจทั้งหมดที่คุณติดตั้ง แพ็คเกจทั้งหมดที่มีอยู่ในพื้นที่เก็บข้อมูล การกำหนดค่าที่สำคัญ และข้อมูลระบบลงในไฟล์ ZIP

สิ่งนี้มีประโยชน์ในกรณีที่คุณต้องการแก้ไขปัญหาที่เกิดขึ้น เพื่อความสะดวกของเรา yum-debug-dump ตั้งชื่อไฟล์เป็น yum_debug_dump-- ซึ่งช่วยให้เราสามารถติดตามการเปลี่ยนแปลงเมื่อเวลาผ่านไป .

yum-debug-dump

เช่นเดียวกับไฟล์ข้อความที่ถูกบีบอัดใดๆ เราสามารถดูเนื้อหาได้โดยใช้คำสั่ง zless:

zless yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

หากคุณต้องการกู้คืนข้อมูลการกำหนดค่าที่ได้รับจาก yum-debug-dump คุณสามารถใช้ yum-debug-restore เพื่อดำเนินการดังกล่าว:

yum-debug-restore yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

9. ดาวน์โหลด Source RPM จาก Yum Repositories

yumdownloader ดาวน์โหลดไฟล์ RPM ต้นฉบับจากที่เก็บ รวมถึงการขึ้นต่อกันด้วย มีประโยชน์ในการสร้างพื้นที่เก็บข้อมูลเครือข่ายเพื่อให้เข้าถึงได้จากเครื่องอื่นที่มีการจำกัดการเข้าถึงอินเทอร์เน็ต

Yumdownloader ช่วยให้คุณไม่เพียงแต่ดาวน์โหลด RPM ไบนารี่เท่านั้น แต่ยังดาวน์โหลดต้นฉบับด้วย (หากใช้กับตัวเลือก --source)

ตัวอย่างเช่น เรามาสร้างไดเรกทอรีชื่อ htop-files ซึ่งเราจะจัดเก็บ RPM ที่จำเป็นในการติดตั้งโปรแกรมโดยใช้ rpm ในการทำเช่นนั้น เราจำเป็นต้องใช้สวิตช์ --resolve พร้อมกับ yumdownloader:

mkdir htop-files
cd htop-files
yumdownloader --resolve htop
rpm -Uvh 

10. ซิงโครไนซ์พื้นที่เก็บข้อมูล Remote Yum กับ Local Directory

reposync มีความเกี่ยวข้องอย่างใกล้ชิดกับ yumdownloader (อันที่จริง รองรับตัวเลือกเกือบเหมือนกัน) แต่มีข้อได้เปรียบอย่างมาก แทนที่จะดาวน์โหลดไฟล์ไบนารี่หรือไฟล์ RPM ต้นทาง ระบบจะซิงโครไนซ์พื้นที่เก็บข้อมูลระยะไกลกับไดเร็กทอรีในเครื่อง

มาซิงค์ที่เก็บ EPEL ที่รู้จักกันดีกับไดเรกทอรีย่อยชื่อ epel-local ภายในไดเรกทอรีการทำงานปัจจุบัน:

man reposync
mkdir epel-local
reposync --repoid=epel --download_path=epel-local

โปรดทราบว่ากระบวนการนี้จะใช้เวลาสักครู่ในขณะที่กำลังดาวน์โหลดแพ็คเกจ 8867:

เมื่อการซิงโครไนซ์เสร็จสิ้น ให้ตรวจสอบจำนวนพื้นที่ดิสก์ที่ใช้โดยมิเรอร์ที่สร้างขึ้นใหม่ของที่เก็บ EPEL โดยใช้คำสั่ง du:

du -sch epel-local/*

ตอนนี้ก็ขึ้นอยู่กับคุณแล้วถ้าคุณต้องการเก็บมิเรอร์ EPEL นี้ไว้ หรือใช้เพื่อติดตั้งแพ็คเกจแทนการใช้รีโมท ในกรณีแรก โปรดจำไว้ว่าคุณจะต้องแก้ไข /etc/yum.repos.d/epel.repo ตามนั้น

11. แก้ไขธุรกรรม Yum ที่ยังไม่เสร็จหรือถูกยกเลิก

yum-complete-transaction เป็นส่วนหนึ่งของโปรแกรม yum-utils ซึ่งตรวจจับธุรกรรม yum ที่ยังไม่เสร็จหรือถูกยกเลิกบนระบบ และพยายามทำให้ธุรกรรมเหล่านั้นเสร็จสมบูรณ์

ตัวอย่างเช่น เมื่อเราอัปเดตเซิร์ฟเวอร์ Linux ผ่านตัวจัดการแพ็กเกจ yum บางครั้งระบบจะแสดงข้อความเตือนดังนี้:

มีธุรกรรมที่ยังไม่เสร็จสิ้นเหลืออยู่ คุณอาจพิจารณาเรียกใช้ yum-complete-transaction ก่อนจึงจะเสร็จสิ้น

เพื่อแก้ไขข้อความเตือนและแก้ไขปัญหาดังกล่าว คำสั่ง yum-complete-transaction จะปรากฏขึ้นมาเพื่อทำธุรกรรมที่ยังไม่เสร็จสิ้นให้เสร็จสมบูรณ์ โดยจะค้นหาธุรกรรม yum ที่ไม่สมบูรณ์หรือถูกยกเลิกใน transaction-all* ไฟล์ และ ทำธุรกรรมเสร็จแล้ว* ซึ่งสามารถพบได้ในไดเรกทอรี /var/lib/yum

เรียกใช้คำสั่ง yum-complete-transaction เพื่อเสร็จสิ้นธุรกรรม yum ที่ไม่สมบูรณ์:


yum-complete-transaction --cleanup-only

ตอนนี้คำสั่ง yum จะทำงานโดยไม่มีคำเตือนการทำธุรกรรมที่ไม่สมบูรณ์


yum update

หมายเหตุ: เคล็ดลับนี้แนะนำโดยผู้อ่านประจำของเรา Mr. โทมัสในส่วนความคิดเห็นที่นี่

สรุป

ในบทความนี้ เราได้กล่าวถึงยูทิลิตี้ที่มีประโยชน์ที่สุดบางส่วนที่มีให้ผ่าน yum-utils หากต้องการดูรายการทั้งหมด โปรดดูที่หน้า man (man yum-utils)

นอกจากนี้ เครื่องมือแต่ละอย่างยังมีหน้า man แยกต่างหาก (ดู man reposync เป็นต้น) ซึ่งเป็นแหล่งข้อมูลหลักของเอกสารที่คุณควรอ้างอิงหากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับเครื่องมือเหล่านี้

หากคุณสละเวลาสักครู่เพื่อตรวจสอบ man page ของ yum-utils บางทีคุณอาจพบเครื่องมืออื่นที่คุณต้องการให้เรากล่าวถึงในเชิงลึกยิ่งขึ้นในบทความแยกต่างหาก หากเป็นเช่นนั้น หรือหากคุณมีคำถาม ความคิดเห็น หรือข้อเสนอแนะเกี่ยวกับบทความนี้ โปรดแจ้งให้เราทราบเกี่ยวกับบทความใดโดยส่งข้อความถึงเราโดยใช้แบบฟอร์มความคิดเห็นด้านล่าง