ฉันสามารถดูสาเหตุที่ติดตั้งแพ็คเกจได้หรือไม่


112

สำหรับแพ็คเกจเฉพาะฉันสามารถค้นหาสาเหตุที่ติดตั้งได้หรือไม่

ดังนั้นฉันสามารถดูหรือติดตั้งด้วยตนเองหรือว่าติดตั้งเป็นการอ้างอิงของแพคเกจอื่นได้หรือไม่ หรือว่าติดตั้งเป็นส่วนหนึ่งของ distro?


คำถามนี้เกี่ยวข้องกับ (ส่วนหนึ่ง) ของคำถามนี้ดูคำตอบนี้สำหรับรายละเอียด
koushik

คำตอบที่ดียิ่งขึ้นสำหรับปี 2017 ที่นี่: askubuntu.com/questions/128524/…
Lambart

คำตอบ:


107

วิธีแก้ปัญหาอย่างรวดเร็วคือการป้อนคำสั่งต่อไปนี้ในเทอร์มินัล:

aptitude why $package

หรือถ้าคุณสนใจเฉพาะสาเหตุที่ดีที่สุด:

aptitude why $package --show-summary

แทนที่$ packageด้วยชื่อของแพ็คเกจและคุณอาจต้องติดตั้งaptitudeแพ็คเกจก่อน

นี่คือผลลัพธ์ที่คุณอาจได้รับ aptitude why aspell --show-summary

Packages requiring aspell:
  inkscape

aptitude why aspellสำหรับรายละเอียดเพิ่มเติมที่คุณจะเรียกใช้ คุณสามารถอ่านตัวอย่างผลลัพธ์ด้านล่างดังนี้: "คุณติดตั้งด้วยตนเองinkscapeซึ่งต้องการlibgtkspellซึ่งต้องใช้libenchantic2aซึ่งต้องใช้aspell" ( iเครื่องหมายบ่งบอกถึงแพ็คเกจที่ติดตั้งAเครื่องหมายจะระบุแพ็คเกจที่ติดตั้งโดยอัตโนมัติ)

i   inkscape       Depends libgtkspell0 (>= 2.0.10)                                                                    
i A libgtkspell0   Depends libenchant1c2a (>= 1.6.0)                                                                   
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en      Depends aspell (>= 0.60.3-2)

ในที่สุดคำสั่งดังต่อไปนี้

apt-cache rdepends --installed $package

รายการแพคเกจอื่น ๆ ที่ติดตั้งบนคอมพิวเตอร์ของคุณที่ขึ้นอยู่โดยตรงกับแพคเกจ $ คุณสามารถเพิ่ม--recurseตัวเลือกเพื่อแสดงรายการแพ็คเกจทั้งหมดที่ขึ้นอยู่กับมันโดยตรงหรือโดยอ้อม


ความถนัดไม่ได้รวมอยู่ในค่าเริ่มต้น :(
badp

1
@badp ขอบคุณที่ชี้ให้เห็น นี่คือสิ่งใหม่ที่ไม่ดีกับผู้ไม่ฝักใฝ่ฝ่ายใดเพียงเพื่อประหยัดพื้นที่ในอิมเมจ iscd liveCD แต่มันเป็นเครื่องมือที่ทรงคุณค่าและฉันจะไม่ไปโดยไม่มี
enzotib

15
apt-cache rdepends --recurse $packageอาจให้แพ็คเกจมากเกินไป ฉันจะเพิ่ม--installedตัวเลือกเพื่อ จำกัด แพ็คเกจที่ติดตั้ง -iตัวเลือกที่ จำกัด ไว้ก่อนแพคเกจที่เกี่ยวข้องกับการพึ่งพาและการพึ่งพา แต่แพคเกจอาจถูกติดตั้งเพราะมันแนะนำโดยแพคเกจอื่น จะรวมถึงแพคเกจคำแนะนำ relateded ดังกล่าวผมคิดว่านี้จะให้คนที่เหมาะสม:apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed --recurse $package
จาร์โนท

4
เทียบเท่ากับคาถาของ @ jarno สั้นกว่าเล็กน้อยโดยสมมติว่าคุณกำลังทุบตีหรือกระสุนอื่น ๆ ที่มีการขยายรั้ง:apt-cache rdepends --no-{suggests,conflicts,breaks,replaces,enhances} --installed --recurse $package
akavel

30

เหตุผลสั้น ๆ เกี่ยวกับสาเหตุที่ติดตั้งแพคเกจบางอย่างสามารถค้นหาได้โดยพิมพ์คำสั่งต่อไปนี้ในเทอร์มินัล ( Applications -> Accessories -> Terminal):

aptitude why <package-name>

แทนที่ด้วยชื่อของแพ็คเกจที่คุณสนใจตัวอย่างเช่นพิมพ์aptitude why libgoo-canvas-perlผลลัพธ์ต่อไปนี้:

i   shutter Suggests libgoo-canvas-perl

ซึ่งโดยทั่วไปหมายความว่าแพ็คเกจshutterในกรณีนี้ได้รับการแนะนำlibgoo-canvas-perlให้ติดตั้ง จากนั้นพิมพ์aptitude why shutterฉันสามารถเดินขึ้นห่วงโซ่การพึ่งพา

อย่างไรก็ตามมีข้อแม้ ฉันมักจะสังเกตเห็นว่าความถนัดสามารถหาคำอธิบายที่เป็นไปได้มากที่สุดสำหรับสถานการณ์ที่อาจไม่ใช่กรณีที่เกิดขึ้นจริง

ในกรณีของฉันการshutterแนะนำlibgoo-canvas-perl- อย่างไรก็ตามแพ็คเกจที่แนะนำไม่ได้ติดตั้งโดยอัตโนมัติตามค่าเริ่มต้น อย่างไรก็ตามมันทำให้หน่วยความจำของฉัน "ประสบการณ์" ไม่สามารถแก้ไขภาพหน้าจอshutterที่ทำให้ฉันติดตั้งด้วยตนเองได้ligbgoo-canvas-perl

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

aptitude show <package-name>

นี่จะเอาต์พุตบรรทัดดังนี้ (บรรทัดที่ 3 ของเอาต์พุต):

Automatically installed: no

สำหรับการรันข้อมูลเพิ่มเติมinfo aptitude(ในเทอร์มินัล) หรือไปที่หน้าความถนัด

หากต้องการทราบว่าเมื่อใดที่ติดตั้งแพ็คเกจเฉพาะมี 2 ตัวเลือก:

  1. ผู้จัดการแพคเกจ Synaptic เก็บบันทึกประวัติของกิจกรรมทั้งหมด ในการดูไฟล์บันทึกประวัติเลือกประวัติจากเมนูไฟล์ คุณสามารถค้นหาInstall(คำนึงถึงกรณี) เพื่อแสดงรายการทั้งหมดที่เกี่ยวข้องกับการติดตั้ง อย่างไรก็ตามสิ่งนี้จะแสดงเฉพาะแพ็คเกจที่ติดตั้งโดยใช้ Synaptic
  2. รันคำสั่งต่อไปนี้ในเทอร์มินัล นี่จะค้นหาบันทึก dpkg สำหรับรายการประวัติการติดตั้ง อย่างไรก็ตามมีการ จำกัด จำนวนการเก็บรักษาบันทึกเหล่านี้ไว้สูงสุดดังนั้นหากแพ็คเกจที่คุณกำลังค้นหาติดตั้งมานานแล้วคุณอาจไม่พบ รายละเอียดเพิ่มเติมที่นี่

    zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
    

1
หากคุณต้องการทราบเมื่อติดตั้งหรืออัพเกรดแพ็คเกจzcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
Chris Good

@ChrisGood: คุณสามารถป้อนความคิดเห็นของคุณอีกครั้งโดยไม่ใส่เครื่องหมายอัญประกาศได้ดังนั้นจึงสามารถคัดลอก / วางได้?
Dan Dascalescu

1
ขอบคุณสำหรับการชี้ให้เห็นว่า ด้วยเครื่องหมายคำพูดคู่ที่ถูกต้อง: zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep "\ install \ | \ upgrade \"
Chris Good

12

ใช่คุณทำได้และเป็นคำสั่งที่ชัดเจนมาก เมื่อคุณติดตั้งความสามารถแล้วคุณสามารถเปิดโฆษณาประเภทเทอร์มินัลหน้าต่างได้:

aptitude why package

ที่ควรให้รายการแพคเกจที่ขึ้นอยู่กับแพคเกจเฉพาะนั้น หากเป็นแพ็คเกจที่ติดตั้งด้วยตนเองมันจะพูดบางอย่างเช่น "ไม่สามารถหาเหตุผลในการติดตั้งแพ็คเกจได้"


5

นี่เป็นวิธีง่ายๆที่ไม่ต้องพึ่งพาaptitudeซึ่ง 10.10 จะไม่จัดส่งตามค่าเริ่มต้นอีกต่อไป

ชัดเจน

เปิด Synaptic แล้วลองลบออก

หากกล่องโต้ตอบปรากฏขึ้นขอให้คุณลบแพ็คเกจอื่น ๆ นั่นคือแพ็กเกจที่ (ซ้ำ) ขึ้นอยู่กับมัน

จากสถานี

apt-get remove package_name_goes_here -s

อีกครั้งแพคเกจที่จะถูกลบออกเป็นผลมาจากทั้งหมดที่ขึ้นอยู่กับมัน (ซ้ำ) ( -sพารามิเตอร์บอกapt-getว่าไม่ได้ลบแพ็กเกจจริงๆ)


2
นี่เป็นวิธีการแก้ปัญหาที่มีความเสี่ยงเพราะสามารถลบแพคเกจและการอ้างอิงทั้งหมดได้หากคลิกผิด
ImaginaryRobots

1
@ImaginaryRobots ว่าเป็นจำนวนมากของ misclicking (คุณต้อง misclick ตกลงในกล่องโต้ตอบแรกแล้วนำไปใช้แล้วอีกครั้งตกลงในกล่องโต้ตอบการยืนยัน.) สำหรับรุ่น terminal, นอกจากนี้ยังมีพิเศษยืนยันคุณควรพิมพ์ผิดy/N -sฉันได้เพิ่มคำเตือนแล้ว
badp

1
-1 เนื่องจากข้อมูลนี้มีอยู่ใน Synaptic ภายใต้แท็บการพึ่งพาเมื่อดูคุณสมบัติของแพคเกจ
alexanderpas

@alex ไม่ถูกต้อง - กล่องโต้ตอบนั้นไม่ได้บอกคุณว่ามีการติดตั้งแพ็คเกจด้วยตนเองหรือโดยอัตโนมัติ PS: รีเซ็ตกล่องจดหมายเข้าลองใหม่อีกครั้ง
badp

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