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

วิธีดูรายการไฟล์ที่ RPM Package ขึ้นอยู่กับ (Dependencies)

เมื่อพยายามถอนหรืออัปเกรดซอฟต์แวร์ใน Linux แบบ RPM บ่อยครั้งจะเจอปัญหา Dependency (ที่เรียกว่า "RPM Hell" หรือ "Dependency Hell") คู่มือนี้ช่วยดูว่า Package ตัวไหนต้องการไฟล์อะไรบ้าง

คำสั่งตรวจสอบ Dependency

# rpm -qR <package-name>

ตัวอย่าง: ตรวจสอบ sendmail

# rpm -qR sendmail-8.13.1-3.2
/bin/bash
/bin/mktemp
/bin/sh
/usr/sbin/alternatives
/usr/sbin/useradd
bash >= 2.0
chkconfig >= 1.3
config(sendmail) = 8.13.1-3.2.el4
cyrus-sasl
fileutils
gawk
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1)
...

ประเภทของ Dependency ที่แสดง

  • ไฟล์ระบบ (Files): เช่น /bin/bash, /usr/sbin/useradd
  • Package อื่น (Packages): เช่น bash >= 2.0, cyrus-sasl
  • Library แบบเฉพาะเจาะจง (Libraries): เช่น libc.so.6(GLIBC_2.1)

คำสั่ง RPM ที่เกี่ยวข้องเพิ่มเติม

คำสั่งหน้าที่
rpm -qaแสดงแพ็กเกจที่ติดตั้งทั้งหมด
rpm -qa | grep <keyword>ค้นหาแพ็กเกจที่ติดตั้งแล้ว
rpm -ivh package.rpmติดตั้งแพ็กเกจใหม่
rpm -Uvh package.rpmอัปเกรดแพ็กเกจ
rpm -e package-nameถอนแพ็กเกจ
rpm -qRp package.rpmดู dependency ของไฟล์ .rpm ที่ยังไม่ติดตั้ง

เคล็ดลับแก้ Dependency Hell

  • ใช้ yum หรือ dnf แทน rpm โดยตรง - จะจัดการ dependency ให้อัตโนมัติ
  • เพิ่ม Repository ที่มีแพ็กเกจครบถ้วน (EPEL, Remi, ฯลฯ)
  • ใช้ rpm --test -e package ทดสอบการถอนก่อนทำจริง

การดู dependency ล่วงหน้าช่วยวางแผนการติดตั้ง/ถอนแพ็กเกจได้ดีขึ้น และหลีกเลี่ยงระบบเสียหาย