ฉันได้ติดตั้งแพ็คเกจ rpm บางส่วนใน Fedora 17 ของฉันแพ็คเกจบางตัวมีการพึ่งพามาก ฉันได้ลบบางแพ็คเกจ แต่ฉันลืมลบการอ้างอิงที่ไม่ได้ใช้กับ yum remove
ฉันจะทำอย่างนั้นได้อย่างไร
ฉันได้ติดตั้งแพ็คเกจ rpm บางส่วนใน Fedora 17 ของฉันแพ็คเกจบางตัวมีการพึ่งพามาก ฉันได้ลบบางแพ็คเกจ แต่ฉันลืมลบการอ้างอิงที่ไม่ได้ใช้กับ yum remove
ฉันจะทำอย่างนั้นได้อย่างไร
คำตอบ:
มันไม่ง่าย. คุณจะแยกแยะระหว่าง "ไฟล์ที่บางสิ่งที่ฉันต้องการตั้งแต่ลบ" จาก "ไฟล์ที่ไม่ต้องการโดยสิ่งอื่นที่ฉันต้องการ" ได้อย่างไร?
คุณสามารถใช้package-cleanup
คำสั่งจากyum-utils
แพ็คเกจเพื่อแสดงรายการ "โหนดโหนด" ในกราฟการพึ่งพาแพคเกจของคุณ แพ็คเกจเหล่านี้สามารถลบออกได้โดยไม่กระทบต่อสิ่งอื่น:
$ package-cleanup --leaves
สิ่งนี้จะสร้างรายการของ "ไลบรารี" ซึ่งไม่มีอะไรอื่นขึ้นอยู่กับ ในกรณีส่วนใหญ่คุณสามารถลบแพ็คเกจเหล่านี้ได้อย่างปลอดภัย หากคุณเพิ่ม--all
ในบรรทัดคำสั่ง:
$ package-cleanup --leaves --all
คุณจะได้รับแพ็คเกจที่ไม่ได้พิจารณาว่าเป็นห้องสมุด แต่รายการนี้จะต้องใช้เวลานานจนอาจไม่มีประโยชน์
ถ้าคุณติดตั้งแพ็คเกจด้วย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!
yum history
ผมไม่เคยได้ยิน ขอบคุณ!
เริ่มจาก Fedora 18 คุณสามารถใช้คำสั่งนี้
yum autoremove
หรือ
yum remove --setopt=clean_requirements_on_remove=1
นอกจากนี้คุณยังสามารถใช้คำสั่ง autoremove กับแพคเกจเฉพาะ
yum autoremove <package>
ซึ่งจะลบการอ้างอิงที่ไม่จำเป็นออกจากแพ็คเกจที่ติดตั้งนั้น autoremove
เป็นนามแฝงอย่างมากremove --setopt=clean_requirements_on_remove=1
แต่ด้วยเหตุผลบางอย่างก็ยังไม่มีเอกสาร
yum remove --setopt=clean_requirements_on_remove=1
ทำงานสำหรับฉันใน centOS
package-cleanup --leaves && yum autoremove
แล้ว libvorbis ที่ถูกลบไปและทำให้แอปพลิเคชั่น "Ices" อินเทอร์เน็ต - วิทยุ - สตรีมตาย - อาจเป็นเพราะมันไม่ได้อยู่ใน repos และฉันต้องรวบรวมมัน
yum autoremove
ทำงานบน CentOS 7.6 เช่นกัน
ฉันเอาลาร์สก์ตอบไปหนึ่งก้าว
$ package-cleanup -q --leaves | xargs -l1 yum -y remove
วิธีนี้จะทำให้การอ้างอิงทั้งหมดที่สามารถลบได้โดยไม่ส่งผลกระทบต่อสิ่งอื่นและจะลบออก ดีกว่าจะผ่านทีละคน
"-q" มีประโยชน์ในบางระบบที่พิมพ์ "การตั้งค่า yum" เป็นอย่างอื่นทำให้คำสั่งนี้ลบ yum และนั่นไม่ใช่สิ่งที่คุณต้องการ
package-cleanup
เอาท์พุท "การตั้งค่ายำ" บนเครื่องของฉันซึ่งส่งผลให้ยัมลบตัวเอง ตอนนี้ฉันกำลังพยายามหาวิธีเรียงลำดับ
-q
ตัวเลือกในแพ็คเกจการล้างข้อมูล สิ่งนี้ก็เกิดขึ้นกับฉันเช่นกัน: D
package-cleanup -q --leaves | xargs -r -l1 yum -y remove
จะข้าม xargs อย่างเงียบ ๆ หากเอาต์พุตการล้างแพ็กเกจว่างเปล่ามีประโยชน์สำหรับสคริปต์อัตโนมัติเช่น ansible, เชฟ, หุ่นเชิด, คนจรจัด
ใน Fedora คือรุ่นใหม่ที่มีdnf
คุณสามารถใช้แทนสำหรับdnf repoquery --unneeded
package-cleanup --leaves
yum
manpage: linux.die.net/man/8/yumหรือยัง?