저장소에 없는 설치된 패키지를 yum으로 나열하는 방법

저장소에 없는 설치된 패키지를 yum으로 나열하는 방법

저는 Oracle Linux/RHEL을 실행 중이며 이름/스키마가 활성 저장소에 없는 설치된 패키지 목록을 가져오려고 합니다. 이 패키지들은 실행 yum list installed되면 빨간색으로 표시되는데 , 이 패키지들만 나열하는 yum 명령이 있나요?

답변1

이것은엄격하게OL7의 경우:

sudo yum list installed | egrep -v "@ol7|@anaconda"

다음을 통해 모든 저장소를 볼 수 있습니다.

sudo yum list installed | grep -v "Loaded plugins" | awk '{print $3}' | sort -u

답변2

나는 당신의 "질문"에 쉽게 대답할 수 있을지 모르겠습니다.긍정적인저장소"를 사용하지만 다음을 통해 저장소를 통해 설치되지 않은 모든 패키지를 찾을 수 있습니다.

awk 'NR <=3 { next; } { while (NF < 3) 
  { getline more; $0=$0 more; } }  
  $3 !~ /^@/ {  print }' \
 <( yum list installed )

현재 포함되지 않은 패키지에 관심이 있으시면활성화됨저장소가 활성화되어 있거나 시스템에서 더 이상 인식되지 않는 저장소에 의해 설치되었을 수 있는 경우 다음을 수행할 수 있습니다.

awk 'FNR==NR && FNR > 1 { sub(/^!/,"",$1); repos["@" $1]=1; next; } 
  FNR <=3 { next; } { while (NF < 3) { getline more; $0=$0 more; } } 
  !($3 in repos) {  print }' \
<( yum repolist enabled ; echo anaconda ) \
<( yum list installed )

awk를 처음 접하는 사람들을 위해 이것은 FNR==NR첫 번째 입력 파일/스트림을 나머지 입력에서 분리하는 관용구입니다. 이 부분에서는 다음과 같은 주의 사항에 따라 저장소 이름을 해시로 로드합니다.

  • !로 시작하는 저장소 이름을 포함하고 !로 시작하는 저장소 이름을 제외합니다.
  • 설치된 목록의 최종 필드와 비교할 때 @더 빠른 조회를 위해 이름 앞에 추가됩니다 .

이제 복잡해 보이는 중간 프로그램은 yum이 자동으로 분할되는 줄을 다시 조립합니다. 입력 행에 열/필드가 3개 미만이면 다음 행이 추가됩니다.

마지막 프로그램은 세 번째 필드가 @로 시작하는지 테스트하거나 해당 필드가 저장소 목록에 있는지 테스트합니다.

참고: yum repolist enabled ; echo anacondaos-install 중에 설치된 패키지도 제외되도록 repolist에 "anaconda"를 추가하십시오.

관련 정보