จะแสดงรายการแพ็กเกจที่ขึ้นต่อกันอย่างไร (reverse dependencies)


201

ในการวิจัยสิ่งที่ทำให้เกิดการติดตั้งแพคเกจที่กำหนดฉันต้องการได้รับรายชื่อของแพคเกจที่ขึ้นอยู่กับแพคเกจที่ man dpkgฉันไม่สามารถหาอะไรที่เห็นได้ชัดใน


ที่เกี่ยวข้อง: askubuntu.com/questions/13296/…
Seth

5
คำตอบของคำถามที่เก่ากว่าทั้งหมดโคจรรอบaptitudeสิ่งที่ไม่ได้รับการติดตั้งโดยค่าเริ่มต้นสำหรับปี ในปี 2017 ทุกคนบน Ubuntu apt-cacheยังคงมี ทุกคนที่ติดตามคำถามที่เชื่อมโยงจะหลงทางในการสนทนาเกี่ยวกับโปรแกรมที่มีไม่กี่คน
Lambart

คำตอบ:


252

apt-cache rdepends packagename ควรทำสิ่งที่คุณต้องการ


1
ยอดเยี่ยม! apt-cache rdepends tofrodosยืนยันความสงสัยว่ามีการติดตั้งโดยแพ็คเกจอื่น (สิ่งที่ล้าสมัยdos2unix)
l0b0

2
สำหรับวันนี้ (เวอร์ชั่น apt 0.9.9.1) มี - ตัวเลือกการชำระเงินที่ใช้งานได้กับ rdepends
jarno

43
ถ้าคุณเพิ่ม--installedผลผลิตเป็นประโยชน์แม้สำหรับแพคเกจที่สามารถนำมาใช้โดยอื่น ๆ อีกมากมาย:apt-cache rdepends --installed packagename
quazgar

2
มีไวยากรณ์ที่แตกต่างกันเล็กน้อยซึ่งช่วยให้ฉันแยกความแตกต่างระหว่างแนะนำ, ขึ้นอยู่กับ, แนะนำ, ฯลฯ ไวยากรณ์คือsudo apt rdepends packagename(สังเกตว่ามันไม่ได้ใช้แคชฉลาด แต่เพียงฉลาด)
Vahid Pazirandeh

4
สำหรับเอาต์พุตทำไมบางแพ็กเกจจึงมีแถบแนวตั้ง (สัญลักษณ์ไพพ์) อยู่ข้างหน้า?
Vahid Pazirandeh

62

ความถนัดมีวิธีจัดการที่ดีพอสมควร:

$ aptitude why bash
i   foomatic-filters PreDepends bash (>= 2.05)

ตามค่าเริ่มต้นรายการจะแสดงเฉพาะเหตุผล "ที่ติดตั้งมากที่สุด, รัดกุมที่สุด, รัดกุมที่สุด" แต่คุณสามารถใช้aptitude -v whyเพื่อให้เอาต์พุตทุกสิ่งที่พบ


4
ดูเหมือนว่ามันจะพิจารณาเฉพาะแพ็คเกจที่ติดตั้ง แต่ไม่ใช่ทุกสิ่งที่มี และนั่นคือสิ่งที่ฉันต้องการ
Tuukka Mustonen

3
สำหรับสิ่งที่คุณต้องการreverse-dependsในubuntu-dev-tools
tumbleweed

เดเบียนล่ะ?
Tuukka Mustonen

1
ubuntu-dev-toolsอยู่ใน Debian
tumbleweed

มันเยี่ยมมาก ฉันได้เรียนรู้ว่าopenssh-server แนะนำ (และติดตั้งดังนั้น) xauthบนเซิร์ฟเวอร์หัวขาดลากในการอ้างอิง x11 หลายร้อยและการปรับปรุงไร้ประโยชน์หลายสิบต่อเดือน นั่นเป็นปัญหาของการจัดการแพ็คเกจอัตโนมัติ!
BaseZen


16

มีมากกว่าหนึ่งวิธีโดยแต่ละวิธีแสดงผลลัพธ์ที่แตกต่างกัน

สำหรับมุมมองรายละเอียดของแผนผังการพึ่งพาแบบย้อนกลับแบบเต็ม

aptitude install apt-rdepends
apt-rdepends -r bash

อีกทางเลือกหนึ่ง;

apt-cache showpkg bash

หรือรายการย่อ:

apt-cache rdepends bash

สิ่งที่rdependsแสดงให้เห็นในต้นไม้นั้น? แสดงให้เห็นว่าapt-rdepends php7.0-fpm ไม่ได้ขึ้นอยู่กับ PHP, PHP FPM อย่างเดียว sedsed
Dan Dascalescu

มันย้อนกลับขึ้นอยู่กับมันหมายความว่า PHP ขึ้นอยู่กับ sed
Erik Berkun-Drevnig

1
สวัสดีพวกที่จริง "apt-rdepends" หมายถึง "การพึ่งพาซ้ำ" หากคุณต้องการการพึ่งพาแบบเรียกซ้ำแบบย้อนกลับคุณต้องพิมพ์:apt-rdepends -r yourPackageNameHere
SebMa

หน้า man-apt-cache บอกว่า "rdepends แสดงรายการของการพึ่งพาย้อนกลับแต่ละแพคเกจที่มี" ในขณะที่ apt-rdepends ต้องใช้ตัวเลือก -r เพื่อทำการอ้างอิงย้อนกลับตามที่ @SebMa พูด
NeilG

8

ตัวเลือกที่ง่ายที่สุดยังคงเป็น:

apt rdepends package-name

ซึ่งไม่ต้องการให้คุณติดตั้งแพ็คเกจใด ๆ


1
นี่คือการเพิ่มคำตอบที่ยอมรับคืออะไร?
l0b0

2
คำตอบที่ยอมรับไม่ได้เกี่ยวข้องกับสิ่งนี้ เอาท์พุทจะแตกต่างกันอย่างสิ้นเชิงและเป็นวิธีที่มีประโยชน์มากขึ้นสำหรับการบริโภคของมนุษย์กว่าฉลาด - แคชของ คำตอบระบุว่า apt-cache ไม่ได้ถูกติดตั้งเป็นค่าเริ่มต้นทุกที่ - เพียงอย่างเดียวควรเป็นคำใบ้ที่ดีว่าเหตุใดคำตอบนี้จึงมีจุดประสงค์ ในที่สุดนี่คือคำตอบที่ฉันกำลังมองหาดังนั้น downvote ใด ๆ ก็ค่อนข้างโง่
stefanct

เหตุผลสำคัญอย่างหนึ่งที่ว่าทำไมสิ่งนี้ถึงดีกว่ารุ่นที่ยอมรับก็คือมันมีเวอร์ชันของการพึ่งพาซึ่งแตกต่างจากapt-cacheเอาต์พุตของ มันเป็นสิ่งที่ฉันต้องการในตอนนี้ (การดีบักความเข้ากันไม่ได้ glibc 2.28, upvoting ดังนั้น)
ต่อ Lundberg

upvote สำหรับใช้เพียงฉลาด ในช่วงเวลาของคำตอบเดิมฉันไม่แน่ใจว่าวิธีแก้ปัญหาที่เหมาะสมนี้จะใช้ได้ แต่ถ้าเป็นตอนนี้ก็ดี
RobotHumans

7

นอกเหนือจากคำตอบที่ดีอื่น ๆ แล้ว APT / APT-GET -sยังทำการลบ "จำลอง" (หรือติดตั้ง)

sudo apt -s remove <pkgname>

การใช้-sหรือ--simulatedเพื่อลบ (หรือติดตั้ง) แพ็คเกจปกติจะแสดงรายการการพึ่งพาใด ๆ ที่ได้รับผลกระทบ มันจะแสดงแพคเกจกำพร้าเมื่อถอดหรือจำเป็นต้องพึ่งพาเมื่อติดตั้งโดยไม่ได้ดำเนินการหรือinstall removeให้ข้อมูลเท่านั้น


apt remove -s php7.0-fpmThe following additional packages will be installed: apache2 apache2-bin apache2-data libapache2-mod-php7.0 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0แสดงให้เห็นว่า ทำไม apache จะถูกติดตั้งถ้าฉันลบ PHP FPM
Dan Dascalescu

@DanDascalescu อืม อาจเป็นสคริปต์การติดตั้ง / ลบที่ไม่ดีสำหรับ apt pkg หรือคุณอาจมีการพึ่งพาอื่น ๆ ที่ติดตั้ง apache2 เป็น dep (หมายถึงต้องการเว็บเซิร์ฟเวอร์ - และฉันเชื่อว่า apache2 เป็นเว็บเซิร์ฟเวอร์เริ่มต้น) อาจเป็นบางสิ่ง แค่ไม่แน่ใจ มีกลิ่นของโพสต์ที่ดีใน AskUbuntu ถ้าคุณยังไม่พบคำตอบ
bshea
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.