จะแสดงรายการการพึ่งพา RPM ได้อย่างไร


36

เซิร์ฟเวอร์ที่ใช้งานจริงของเราใช้ CentOS รีลีส 5.2 (รอบชิงชนะเลิศ)

ฉันจะดู / รับ / รายการการขึ้นต่อกันทั้งหมดของแพ็กเกจ RPM ที่ติดตั้งแล้วได้อย่างไร?

ตัวอย่างเช่น: SQLite v3.3.6 ได้รับการติดตั้งในเซิร์ฟเวอร์แล้ว ฉันต้องการดูการอ้างอิงทั้งหมดของแพ็คเกจนี้

นี่คือผลลัพธ์ของคำสั่ง: rpm -qa |grep sqlite

python-sqlite-1.1.7-1.2.1
sqlite-3.3.6-2
sqlite-3.3.6-2

นอกจากนี้เหตุใดจึงมีรายการ 2 รายการของsqlite-3.3.6-2ที่นี่

คำตอบ:


28
  1. rpm -q --requires somepackagehere

  2. หนึ่งคือi?86แพคเกจอื่น ๆ คือx86_64แพคเกจ


ระบบปฏิบัติการของฉันคือ 64- บิต แพคเกจสถาปัตยกรรม 2 สามารถอยู่ร่วมกันในเซิร์ฟเวอร์เดียวกันได้หรือไม่ วัตถุประสงค์ / ความต้องการในการมีสถาปัตยกรรมแพ็คเกจ 2 ชุดในเวลาเดียวกันคืออะไร?
Gnanam

2
RH- / Fedora-distros สนับสนุนmultiarchโดยแพคเกจต่างๆที่เป็นของ " archที่แตกต่างกัน แต่คล้ายกันพอ" สามารถอยู่ร่วมกันเพื่อให้อนุญาตการทำงานที่สร้างขึ้นสำหรับซุ้มทั้งสอง
Ignacio Vazquez-Abrams

น่าเสียดายที่ต้องมีการติดตั้งแพคเกจภายในเครื่อง: \
rogerdpack

@rogerdpack: ใช่ นั่นคือสิ่งที่คำถามถาม
Ignacio Vazquez-Abrams

ใช่น่าเสียดายที่ google ส่ง "ทุกคนมาตรงนี้" ถ้าคุณ google "รายการ RPM dependencies" - google มีขอบเขตคืบคำถาม! โดยไม่คำนึงถึงเห็นคำตอบของเดวี่สำหรับผู้ติดตามที่ต้องการฟังก์ชันการทำงานนั้น
rogerdpack

34

yum deplistคำสั่งจะแสดงให้คุณซึ่งรอบต่อนาที 's มีการอ้างอิงที่นี่เป็นตัวอย่างสำหรับexpectแพคเกจ (นี้จะทำงานแม้ว่าคุณจะไม่ได้มีแพคเกจติดตั้งภายใน):

# yum deplist expect
..
..
package: expect.i386 5.43.0-5.1
 dependency: libc.so.6
  provider: glibc.i686 2.5-49
  provider: glibc.i686 2.5-49
 dependency: libtcl8.4.so
  provider: tcl.i386 8.4.13-4.el5

คำสั่งนี้ไม่ทำงาน ฉันทำบางสิ่งบางอย่างหายไปหรือมีบางอย่างขาดหายไปในคำสั่งของคุณ?
Gnanam

ขออภัยมีช่องว่างหายไปคำสั่งคือแพ็คเกจ yum deplist
เดฟ

1
+1 การใช้ YUM ที่นี่เป็นการดีที่เรียกซ้ำและแก้ไขสิ่งต่าง ๆ เช่น 'perl (COnfig :: Tiny)' หรือ 'libc.so (64 บิต)'
djhaskin987

6

ตามคำตอบของ Ignacio คุณสามารถดูสถาปัตยกรรมเฉพาะของแพ็คเกจได้โดยทำดังต่อไปนี้:

$ rpm -qa --queryformat "%{NAME} %{ARCH}\n" sqlite
sqlite i686

ในกรณีของฉันฉันมีเพียงแพ็คเกจ i686 ... แต่คุณสามารถรับสถาปัตยกรรมที่เกี่ยวข้องกับแพ็คเกจได้ หากคุณสนใจในสิ่งอื่น ๆ ที่คุณจะได้รับจาก --queryformat ออก a rpm --querytagsเพื่อดูรายการตัวแปรที่มีให้


1
+1 คำสั่งของคุณในรายการตามสถาปัตยกรรมที่ชาญฉลาดก็มีประโยชน์เช่นกัน
Gnanam

3

ฉันมีตัวอย่างกระสุนด่วนที่พิมพ์แพ็คเกจที่ติดตั้งทั้งหมดพร้อมกับการอ้างอิง:

for i in `rpm -qa` ; do echo "Package [$i]:"; rpm -q --requires $i ; echo ; done

3

ผู้คนได้ตอบกลับด้วย:

  1. rpm -q --requires PKG
  2. yum -q deplist PKG

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

จะทำอย่างไรถ้าคุณไม่ได้ติดตั้งแพ็คเกจ yumยังคงสามารถใช้งานได้ แต่โดยทางอ้อม คุณสามารถทำการติดตั้งจำลองโดยการยกเลิกการดำเนินการติดตั้ง

printf n  |  yum install PKG  |  grep -- "---> Package"

นี่คือตัวอย่าง:

printf n  |  yum install php  |  grep -- "---> Package"
---> Package php.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-cli.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-common.x86_64 0:5.4.16-45.el7 will be installed
---> Package libzip.x86_64 0:0.10.1-8.el7 will be installed

วิธีแก้ปัญหาที่ยอดเยี่ยมสำหรับข้อ จำกัด การรายงาน
MarkHu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.