ลบแพ็คเกจที่ไม่ได้ใช้


62

ฉันได้ติดตั้งแพ็คเกจ rpm บางส่วนใน Fedora 17 ของฉันแพ็คเกจบางตัวมีการพึ่งพามาก ฉันได้ลบบางแพ็คเกจ แต่ฉันลืมลบการอ้างอิงที่ไม่ได้ใช้กับ yum remove

ฉันจะทำอย่างนั้นได้อย่างไร


คุณดูyummanpage: linux.die.net/man/8/yumหรือยัง?
Linuxios

คำตอบ:


39

มันไม่ง่าย. คุณจะแยกแยะระหว่าง "ไฟล์ที่บางสิ่งที่ฉันต้องการตั้งแต่ลบ" จาก "ไฟล์ที่ไม่ต้องการโดยสิ่งอื่นที่ฉันต้องการ" ได้อย่างไร?

คุณสามารถใช้package-cleanupคำสั่งจากyum-utilsแพ็คเกจเพื่อแสดงรายการ "โหนดโหนด" ในกราฟการพึ่งพาแพคเกจของคุณ แพ็คเกจเหล่านี้สามารถลบออกได้โดยไม่กระทบต่อสิ่งอื่น:

$ package-cleanup --leaves

สิ่งนี้จะสร้างรายการของ "ไลบรารี" ซึ่งไม่มีอะไรอื่นขึ้นอยู่กับ ในกรณีส่วนใหญ่คุณสามารถลบแพ็คเกจเหล่านี้ได้อย่างปลอดภัย หากคุณเพิ่ม--allในบรรทัดคำสั่ง:

$ package-cleanup --leaves --all

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


9
APT (เทียบเท่า Debian ของ Yum) มีแนวคิด "แพคเกจที่ติดตั้งโดยอัตโนมัติ" หากแพคเกจนั้นไม่ได้ร้องขออย่างชัดเจน แต่ถูกดึงเป็นการอ้างอิงเท่านั้นมันจะถูกลบโดยอัตโนมัติ (พร้อมรับคำยืนยัน) หากแพ็คเกจที่ขึ้นอยู่กับมันจะถูกลบออกทั้งหมด โดยไม่มีข้อบ่งชี้ประเภทนี้มันแน่นอนไม่ใช่เรื่องง่าย
Gilles

101

ถ้าคุณติดตั้งแพ็คเกจด้วยyum installพูดว่าpdftkมันจะดึงการพึ่งพาจำนวนมาก:

Installed:
  pdftk.x86_64 0:1.44-10.fc18

Dependency Installed:
  bouncycastle.noarch 0:1.46-6.fc18     
  itext-core.noarch 0:2.1.7-14.fc18     
  libgcj.x86_64 0:4.7.2-8.fc18          
  bouncycastle-mail.noarch 0:1.46-6.fc18
  java-1.5.0-gcj.x86_64 0:1.5.0.0-40.fc18
  sinjdoc.x86_64 0:0.5-13.fc18
  bouncycastle-tsp.noarch 0:1.46-5.fc18
  java_cup.noarch 1:0.11a-10.fc18
  itext.x86_64 0:2.1.7-14.fc18   
  javamail.noarch 0:1.4.3-12.fc18

Complete!

yum remove pdftk จะลบเฉพาะแพ็คเกจนั้นและไม่ได้อ้างอิงทั้งหมด

แต่คุณสามารถดู 'ธุรกรรม' ทั้งหมด (ติดตั้งลบ ฯลฯ ):

$ sudo yum history list pdftk
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------  
    88 | install pdftk            | 2012-12-14 13:35 | Install        |   11   

จากนั้นคุณสามารถยกเลิกการทำธุรกรรมนั้นได้:

$ sudo yum history undo 88
Undoing transaction 88, from Fri Dec 14 13:35:34 2012
    Dep-Install bouncycastle-1.46-6.fc18.noarch       @fedora
    Dep-Install bouncycastle-mail-1.46-6.fc18.noarch  @fedora
    Dep-Install bouncycastle-tsp-1.46-5.fc18.noarch   @fedora
    Dep-Install itext-2.1.7-14.fc18.x86_64            @fedora
    Dep-Install itext-core-2.1.7-14.fc18.noarch       @fedora
    Dep-Install java-1.5.0-gcj-1.5.0.0-40.fc18.x86_64 @fedora
    Dep-Install java_cup-1:0.11a-10.fc18.noarch       @fedora
    Dep-Install javamail-1.4.3-12.fc18.noarch         @fedora
    Dep-Install libgcj-4.7.2-8.fc18.x86_64            @fedora
    Install     pdftk-1.44-10.fc18.x86_64             @fedora
    Dep-Install sinjdoc-0.5-13.fc18.x86_64            @fedora
    ...
    Complete!

14
+1 สุดยอดโซลูชันและใช้งานง่ายมาก yum historyผมไม่เคยได้ยิน ขอบคุณ!
Stefan Lasiewski

8
แล้วถ้า 89 ขึ้นอยู่กับ java_cup หรือ libgcj ล่ะ?
WernerCD

2
นี่ควรเป็นคำตอบที่ยอมรับหรือไม่?
Celdor

61

เริ่มจาก Fedora 18 คุณสามารถใช้คำสั่งนี้

yum autoremove

หรือ

yum remove --setopt=clean_requirements_on_remove=1

นอกจากนี้คุณยังสามารถใช้คำสั่ง autoremove กับแพคเกจเฉพาะ

yum autoremove <package>

ซึ่งจะลบการอ้างอิงที่ไม่จำเป็นออกจากแพ็คเกจที่ติดตั้งนั้น autoremoveเป็นนามแฝงอย่างมากremove --setopt=clean_requirements_on_remove=1แต่ด้วยเหตุผลบางอย่างก็ยังไม่มีเอกสาร


5
สั่งการyum remove --setopt=clean_requirements_on_remove=1ทำงานสำหรับฉันใน centOS
BMW

สำหรับฉันpackage-cleanup --leaves && yum autoremoveแล้ว libvorbis ที่ถูกลบไปและทำให้แอปพลิเคชั่น "Ices" อินเทอร์เน็ต - วิทยุ - สตรีมตาย - อาจเป็นเพราะมันไม่ได้อยู่ใน repos และฉันต้องรวบรวมมัน
Nakilon

คำสั่งyum autoremoveทำงานบน CentOS 7.6 เช่นกัน
scrutari

yum autoremove ล้มเหลวในการลบเมล็ดเก่า 4 อันบน CentOS 7
user1133275

5

ฉันเอาลาร์สก์ตอบไปหนึ่งก้าว

$ package-cleanup -q --leaves | xargs -l1 yum -y remove 

วิธีนี้จะทำให้การอ้างอิงทั้งหมดที่สามารถลบได้โดยไม่ส่งผลกระทบต่อสิ่งอื่นและจะลบออก ดีกว่าจะผ่านทีละคน

"-q" มีประโยชน์ในบางระบบที่พิมพ์ "การตั้งค่า yum" เป็นอย่างอื่นทำให้คำสั่งนี้ลบ yum และนั่นไม่ใช่สิ่งที่คุณต้องการ


2
package-cleanupเอาท์พุท "การตั้งค่ายำ" บนเครื่องของฉันซึ่งส่งผลให้ยัมลบตัวเอง ตอนนี้ฉันกำลังพยายามหาวิธีเรียงลำดับ
Paul Lammertsma

@PaulLammertsma เพียงเพิ่ม-qตัวเลือกในแพ็คเกจการล้างข้อมูล สิ่งนี้ก็เกิดขึ้นกับฉันเช่นกัน: D
Ealhad

1
package-cleanup -q --leaves | xargs -r -l1 yum -y removeจะข้าม xargs อย่างเงียบ ๆ หากเอาต์พุตการล้างแพ็กเกจว่างเปล่ามีประโยชน์สำหรับสคริปต์อัตโนมัติเช่น ansible, เชฟ, หุ่นเชิด, คนจรจัด
Ilya Sheershoff

นี่คือคำตอบ
xCovelus

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