Loại bỏ hoàn toàn tất cả các gói tôi đã cài đặt?


12

Tôi đã sử dụng một máy chủ Linux có cài đặt CentOS7 để thử nghiệm và cài đặt một số công cụ. Và bây giờ tôi không nhớ mình đã cài đặt bao nhiêu gói.

Tôi muốn xóa tất cả các gói đó để máy chủ của tôi sẽ như mới. Tôi không muốn tìm kiếm mọi gói và xóa từng cái một. Có cách nào để loại bỏ chúng chỉ bằng một lệnh không?


/var/log/yum.logcó thể hữu ích, nó liệt kê cả tên gói và dấu thời gian. Theo như tôi có thể thấy, nó không liệt kê các gói được thêm vào bởi các cài đặt ban đầu.
Ulrich Schwarz

Tệp yum.log sẽ liệt kê tất cả các gói tôi đã cài đặt, nhưng làm cách nào tôi có thể xóa tất cả chúng chỉ với 1 lệnh?
Một

2
"Kỹ thuật vỏ tiêu chuẩn";) nhưsudo yum remove $(gawk '$0 ~ /Installed/ {printf "%s ", $NF}' /var/log/yum.log)
Ulrich Schwarz

Câu trả lời:


14

Liệt kê tất cả các tệp theo thứ tự ngược của ngày cài đặt của chúng vào một tệp:

rpm -qa --last >list

Bạn sẽ nhận được những dòng như

atop-2.1-1.fc22.x86_64                        Wed Apr 13 07:35:27 2016
telnet-server-0.17-60.fc22.x86_64             Mon Apr 11 20:10:43 2016
mhddfs-0.1.39-3.fc22.x86_64                   Sat Apr  9 21:26:06 2016
libpcap-devel-1.7.3-1.fc22.x86_64             Fri Apr  8 09:40:43 2016

Chọn ngày giới hạn áp dụng cho bạn và xóa tất cả các dòng theo sau nó. Đưa các dòng còn lại cho yum để xóa, sau khi xóa phần ngày. Ví dụ

sudo yum remove $(awk '{print $1}' <list)

7

Bạn cũng có thể thử yum historyvà thường bạn sẽ nhận được một danh sách đánh số những gì đã được cài đặt, như:

[root@localhost ~]# yum history
Loaded plugins: product-id, refresh-packagekit, subscription-manager
Updating Red Hat repositories.
ID | Login user               | Date and time    | Action(s)      | Altered
 3 | root <root>              | 2011-09-14 14:36 | Install        |    1   
 2 | root <root>              | 2011-09-12 15:48 | I, U           |   80   
 1 | System <unset>           | 2011-09-12 14:57 | Install        | 1025  

và bạn có thể sử dụng sau đó yum history undo 3chẳng hạn.

Thêm chi tiết về lịch sử yum ở đây .


0

Để khôi phục mọi giao dịch lịch sử, bạn có thể sử dụng o-liner bên dưới:

# yum history list|awk '$1 ~ /[0-9]+/ {print $1}'| while read a; do yum history undo -y $a; done

Hãy thận trọng trong khi chạy lệnh này, bởi vì nó sẽ loại bỏ tất cả các gói đã cài đặt của bạn! Nếu bạn muốn xác nhận, bạn có thể xóa cờ -y.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.