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-cleanup
lệnh từ yum-utils
gó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 --all
và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 đó. autoremove
rất nhiều bí danh remove --setopt=clean_requirements_on_remove=1
nhưng vì một số lý do, vẫn không có giấy tờ.
yum remove --setopt=clean_requirements_on_remove=1
hoạt động với tôi trong centOS
package-cleanup --leaves && yum autoremove
libvorbis đã 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 autoremove
hoạ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-cleanup
xuấ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.
-q
tù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 remove
sẽ â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 --unneeded
thay thế cho package-cleanup --leaves
.
yum
manpage: linux.die.net/man/8/yum chưa?