CentOS7이 설치된 하나의 Linux 서버를 사용하여 일부 도구를 테스트하고 설치했습니다. 그리고 나는 내가 얼마나 많은 패키지를 설치했는지 기억하지 못한다.
서버가 새 것처럼 보이도록 모든 패키지를 제거하고 싶습니다. 모든 패키지를 검색하고 하나씩 제거하고 싶지 않습니다. 단 하나의 명령으로 제거 할 수있는 방법이 있습니까?
답변
설치 날짜의 역순으로 모든 파일을 파일에 나열하십시오.
rpm -qa --last >list
당신은 같은 줄을 얻을 것이다
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
귀하에게 적용되는 마감 날짜를 선택하고 그 뒤에 나오는 모든 줄을 삭제하십시오. 날짜 부분을 제거한 후 나머지 줄을 yum에 제거하십시오. 예 :
sudo yum remove $(awk '{print $1}' <list)
답변
시도해 볼 수 yum history
있으며 일반적으로 다음과 같이 설치된 항목의 번호가 매겨진 목록을 얻습니다.
[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
yum history undo 3
예를 들어 나중에 사용할 수 있습니다 .
답변
모든 히스토리 트랜잭션을 롤백하기 위해 아래의 o-liner를 사용할 수 있습니다.
# yum history list|awk '$1 ~ /[0-9]+/ {print $1}'| while read a; do yum history undo -y $a; done
설치된 모든 패키지가 제거되므로이 명령을 실행하는 동안주의하십시오! 확인을 원하면 -y 플래그를 제거하십시오.