Tôi đã cài đặt một số gói vòng / phút trên Fedora 17. Một số gói có rất nhiều phụ thuộc. Tôi đã gỡ bỏ một số gói nhưng tôi quên loại bỏ các phụ thuộc không sử dụng với yum remove.
Làm thế nào tôi có thể làm điều đó bây giờ?
Tôi đã cài đặt một số gói vòng / phút trên Fedora 17. Một số gói có rất nhiều phụ thuộc. Tôi đã gỡ bỏ một số gói nhưng tôi quên loại bỏ các phụ thuộc không sử dụng với yum remove.
Làm thế nào tôi có thể làm điều đó bây giờ?
Câu trả lời:
Nó không dễ. Làm thế nào để bạn phân biệt giữa "một tệp được yêu cầu bởi một thứ tôi đã xóa" khỏi "một tệp không được yêu cầu bởi bất cứ thứ gì khác mà tôi thực sự muốn"?
Bạn có thể sử dụng package-cleanuplệnh từ yum-utilsgói để liệt kê "nút lá" trong biểu đồ phụ thuộc gói của bạn. Đây là các gói có thể được gỡ bỏ mà không ảnh hưởng đến bất cứ điều gì khác:
$ package-cleanup --leaves
Điều này sẽ tạo ra một danh sách "thư viện" mà không có gì khác phụ thuộc vào. Trong hầu hết các trường hợp, bạn có thể loại bỏ các gói này một cách an toàn. Nếu bạn thêm --allvào dòng lệnh:
$ package-cleanup --leaves --all
Bạn cũng sẽ nhận được các gói không được coi là thư viện, nhưng danh sách này sẽ còn dài đến mức có thể sẽ không hữu ích.
Nếu bạn cài đặt một gói với yum install, giả sử pdftk, nó sẽ kéo theo rất nhiều phụ thuộc:
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 sẽ chỉ loại bỏ gói đó và không phải tất cả các phụ thuộc.
Nhưng bạn có thể xem tất cả các 'giao dịch' (cài đặt, xóa, v.v.):
$ sudo yum history list pdftk
ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
88 | install pdftk | 2012-12-14 13:35 | Install | 11
Và sau đó bạn có thể hoàn tác giao dịch đó:
$ 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. Cảm ơn!
Bắt đầu từ Fedora 18, bạn chỉ cần sử dụng lệnh này
yum autoremove
hoặc là
yum remove --setopt=clean_requirements_on_remove=1
Bạn cũng có thể áp dụng lệnh autoremove với gói cụ thể
yum autoremove <package>
Mà sẽ loại bỏ các phụ thuộc không cần thiết từ gói cài đặt đó. autoremoverất nhiều bí danh remove --setopt=clean_requirements_on_remove=1nhưng vì một số lý do, vẫn không có giấy tờ.
yum remove --setopt=clean_requirements_on_remove=1hoạt động với tôi trong centOS
package-cleanup --leaves && yum autoremovelibvorbis đã bị xóa và do đó làm cho ứng dụng "Ices" phát trực tuyến qua internet bị chết - có lẽ vì nó không có trong repos và tôi phải biên dịch nó.
yum autoremovehoạt động trên CentOS 7.6.
Tôi trả lời larsks một bước xa hơn.
$ package-cleanup -q --leaves | xargs -l1 yum -y remove
Điều này lấy tất cả các phụ thuộc có thể được loại bỏ mà không ảnh hưởng đến bất cứ điều gì khác và sau đó loại bỏ chúng. Tốt hơn là đi qua từng cái một.
"-q" hữu ích trên một số hệ thống có in "Thiết lập yum" nếu không, khiến lệnh này sẽ loại bỏ yum. Và đó không phải là điều bạn muốn.
package-cleanupxuất ra "Thiết lập yum" trên máy của tôi, dẫn đến việc Yum tự xóa. Bây giờ tôi đang cố gắng tìm ra cách sắp xếp thứ này.
-qtùy chọn để dọn dẹp gói. Điều này cũng xảy ra với tôi: D
package-cleanup -q --leaves | xargs -r -l1 yum -y removesẽ âm thầm bỏ qua xargs nếu đầu ra dọn dẹp gói trống, hữu ích cho các tập lệnh tự động như ansible, đầu bếp, con rối, mơ hồ
Trong Fedoras mới hơn với dnf, bạn có thể sử dụng dnf repoquery --unneededthay thế cho package-cleanup --leaves.
yummanpage: linux.die.net/man/8/yum chưa?