폴더의 어떤 패키지가 다운로드되지 않았는지 확인하는 Linux 스크립트

폴더의 어떤 패키지가 다운로드되지 않았는지 확인하는 Linux 스크립트

나는 내가 직면한 문제를 해결할 방법을 찾으려고 노력하고 있습니다. 직장에 오프라인 독립형 서버가 있습니다. 인터넷에 연결되어 있지 않아 매달 수동으로 서버를 패치해야 했습니다. 다른 Linux 서버(동일 운영 체제)에서 다운로드하려는 콘텐츠 패키지를 폴더로 이동하겠습니다. 이 폴더에는 독립 실행형 서버의 기본 폴더로 전송되는 50-100rpm 패키지가 있습니다.

다음 명령을 실행하여 독립형 서버를 업데이트하여 매달 업그레이드합니다.

#cd November-os-updates

#yum clean all

#yum update *.rpm --disablerepo=*

Novell-os-updates의 모든 rpm 패키지가 성공적으로 설치/업그레이드되었는지 확인할 수 있는 스크립트는 무엇입니까? 모든 것이 성공하면 모든 패키지가 성공적으로 설치되었다는 메시지가 표시됩니다! 어떤 이유로 패키지가 업그레이드되지 않으면 "(패키지 이름)이 설치되지 않았습니다!"와 같은 내용이 표시됩니다. 이는 올바르게 패치를 적용하는 데 큰 도움이 될 것입니다. 과거에는 패키지가 업데이트되지 않아 큰 문제가 발생한 경우가 있었습니다.

답변1

~에서8.2.2. 패키지 나열~의Red Hat 배포 가이드:

yum list available

활성화된 모든 저장소에서 사용 가능한 모든 패키지 나열

또한,8.2.3. 패키지 정보 표시~의같은 가이드또한 유용합니다:

예를 들어, abrt 패키지에 대한 정보를 표시하려면 다음을 입력하십시오.

yum info abrt
...
Name       : abrt
Arch       : x86_64
Version    : 1.0.7
Release    : 5.el6
Size       : 578 k
Repo       : installed
From repo  : rhel
...

November-os-updates다음 해결 방법이 효과가 있는지 알려 주세요 yum list available.

#!/bin/bash

# - [ change working directory ]
cd 'path-to'/November-os-updates

# - [ define variables ]
ALL_PKG=($(yum list available))
INSTLLD=($(ls ./*))

# - [ remove cache of enabled repos ]
yum clean all

# - [ update every currently installed package ]
yum update *.rpm --disablerepo=*

# - [ verify installed packages ]
for ((i=0; i <= "${#ALL_PKG[@]}"; i++)); do
    for ((j=0; j <= "${#INSTLLD[@]}"; j++ )); do

        ## [1] - if installed, print [success]
        if [[ "${INSTLLD[j]}" == "${ALL_PKG[i]}"'.rpm' ]]; then
            echo "${INSTLLD[j]} - success"

        ## [2] - if not installed print [failure]
        else
            echo "${INSTLLD[j]} - failure"

        ## [3] - END
        fi

    done
done

관련 정보