![설치된 RPM 목록에서 연결이 끊긴 CentOS 시스템을 업데이트하는 방법은 무엇입니까?](https://linux55.com/image/132116/%EC%84%A4%EC%B9%98%EB%90%9C%20RPM%20%EB%AA%A9%EB%A1%9D%EC%97%90%EC%84%9C%20%EC%97%B0%EA%B2%B0%EC%9D%B4%20%EB%81%8A%EA%B8%B4%20CentOS%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%84%20%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
연결이 끊긴 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,}