설치된 RPM 목록에서 연결이 끊긴 CentOS 시스템을 업데이트하는 방법은 무엇입니까?

설치된 RPM 목록에서 연결이 끊긴 CentOS 시스템을 업데이트하는 방법은 무엇입니까?

연결이 끊긴 CentOS 7 시스템을 업데이트하는 방법에 대한 좋은 솔루션을 찾는 데 많은 시간을 보냈지만 아직 적합한 솔루션을 찾지 못했습니다.

연결이 끊긴 시스템(RedHat/CentOS)을 업데이트하는 방법에 대한 대부분의 솔루션은 로컬 저장소를 생성하거나 모든 최신 패키지가 포함된 CD/DVD를 사용하도록 지시합니다.

내가 원하는 것은 연결이 끊긴 시스템에 설치된 패키지 목록을 생성하고(예: rpm -qa 사용) 해당 목록을 연결된 시스템으로 가져와 모든 업데이트를 다운로드하는 것입니다. 나는 기본적으로 이와 같이 작동하는 스크립트를 작성하는 데 시간을 보냈습니다. 스크립트는 목록의 모든 패키지를 단계별로 살펴보고 업데이트가 있는지 확인하고, 업데이트가 있으면 업데이트를 다운로드합니다. 그래서 너무 좋습니다. 그러나 문제는 원칙적으로 패키지가 새로운 종속성을 도입할 수 있다는 것입니다. 즉, 기존 시스템에 아직 설치되지 않은 새 패키지를 도입할 수 있다는 것입니다. 따라서 이 문제를 해결하려면 스크립트에서 모든 종속성을 확인하고 새 종속성이 발견되면 다운로드해야 합니다. yum을 반복하고 싶지 않기 때문에 오프라인 업데이트에 사용할 수 있는 yum 스크립트나 도구가 이미 있는지 궁금합니다.

답변1

방법이 있지만 꽤 까다롭고 서버를 망칠 수도 있으므로매우 조심스럽다.

명명법:

  • 온라인: 저장소에 연결된 시스템
  • 오프라인: 시스템이 연결되지 않았습니다

속도:

rpm 데이터베이스를 다음에서 압축합니다.오프라인시스템으로 전송하여온라인체계:

cd /var/lib/rpm/
tar -cvzf /tmp/rpmdb.tgz *
scp /tmp/rpmdb.tgz root@online:/tmp

당신의온라인시스템을 rpm 데이터베이스로 교체하세요.오프라인체계:

cp -r /var/lib/rpm{,.bak} # back up your rpmdb from your online system. Make sure not to lose this!!
rm -rf /var/lib/rpm/*
cd /var/lib/rpm
tar -xvf /tmp/rpmdb.tgz # now your online system pretends to have the rpm database from the offline system. Don't start really installing / uninstalling rpms or you'll break everything

이제 다운로드만 사용하여 업데이트를 시뮬레이션합니다(yum을 사용하지 않고 zypper를 사용하여 실행했지만 비슷할 것입니다).

zypper up --download-only

이제 다운로드한 패키지를 모두 가져올 수 있으며 오프라인 시스템을 업데이트하는 데 충분할 것입니다.

지금을 복원하세요온라인기계:

rm -rf /var/lib/rpm
cp -r /var/lib/rpm{.bak,}

관련 정보