Czy usunąć całkowicie wszystkie zainstalowane pakiety?

12

Użyłem jednego serwera Linux z zainstalowanym CentOS7 do testowania i instalowania niektórych narzędzi. A teraz nie pamiętam, ile pakietów zainstalowałem.

Chcę usunąć wszystkie te pakiety, aby mój serwer był jak nowy. Nie chcę wyszukiwać każdej paczki i usuwać pojedynczo. Czy istnieje sposób ich usunięcia za pomocą tylko jednego polecenia?

Jeden
źródło
/var/log/yum.logmoże być pomocne, wyświetla zarówno nazwę pakietu, jak i znacznik czasu. O ile widzę, nie wyświetla pakietów dodanych podczas początkowych instalacji.
Ulrich Schwarz
Plik yum.log zawiera listę wszystkich zainstalowanych pakietów, ale jak mogę je wszystkie usunąć za pomocą tylko 1 polecenia?
The One
2
„Standardowe techniki powłokowe”;) jaksudo yum remove $(gawk '$0 ~ /Installed/ {printf "%s ", $NF}' /var/log/yum.log)
Ulrich Schwarz

Odpowiedzi:

14

Wyświetl wszystkie pliki w odwrotnej kolejności od daty instalacji do pliku:

rpm -qa --last >list

Dostaniesz takie linie

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

Wybierz datę graniczną, która Cię dotyczy, i usuń wszystkie następujące po niej linie. Daj pozostałym wierszom yum do usunięcia, po usunięciu części daty. Na przykład

sudo yum remove $(awk '{print $1}' <list)
meuh
źródło
7

Możesz także wypróbować yum historyi zazwyczaj otrzymujesz numerowaną listę zainstalowanych programów, takich jak:

[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  

i możesz później użyć yum history undo 3na przykład.

Więcej szczegółów na temat historii yum tutaj .

labirynty
źródło
0

Aby wycofać wszystkie transakcje historii, możesz użyć poniższego linku:

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

Zachowaj ostrożność podczas uruchamiania tego polecenia, ponieważ spowoduje to usunięcie wszystkich zainstalowanych pakietów! Jeśli chcesz potwierdzić, możesz usunąć flagę -y.

sbz
źródło