로컬 Aptly 미러를 사용하여 (Ubuntu) do-release-upgrade 수행(메타 릴리스 파일 누락)

로컬 Aptly 미러를 사용하여 (Ubuntu) do-release-upgrade 수행(메타 릴리스 파일 누락)

배경

현재 규제상의 이유로(예: 서버가 인터넷을 통해 패키지를 가져올 수 없음) Aptly 스냅샷을 사용하여 로컬 deb 미러 설정을 보유하고 있습니다. 이 모든 것은 일반적인 업그레이드에서는 잘 작동합니다. 릴리스 업그레이드(Ubuntu 18.04에서 20.04로)를 수행해야 하는 경우 일반적으로 VM을 교체하면 되지만 일부 서버에서는 미러를 사용하여 전체 릴리스 업그레이드를 수행해야 합니다.

현재 상태

우리는 구성했습니다/etc/update-manager/meta-release우리의 노드에서 우리의 거울을 가리키도록 하지만 물론 없습니다.메타 릴리스 및 메타 릴리스-lts파일은 Aptly에 있습니다. 그런 다음 공식을 복사하면메타 릴리스Aptly에서 제공되는 파일은 다양한 외부 URL, 설치 프로그램, 문서 등을 참조하기 때문에 여전히 작동하지 않습니다. Aptly를 가리키도록 URL을 변경하더라도 해당 파일은 모두 존재하지 않습니다. . 그래서 우리는 그것들도 복사하고 제공해야 합니다.

해결책?

우리는메타 릴리스파일, 모든 설치 프로그램 다운로드 등을 제공하고 자체 생성메타 릴리스그 파일? 이 작업을 수행하는 더 간단한 방법이 있어야 합니다! 처음부터 새로 구축해야 하나요? 아니면 사용 가능한 도구가 있나요?

https://www.aptly.info/

추신. 우리는 Aptly가 부분적으로 폐기된 것으로 보이므로 Pulp 3으로 전환하려고 생각하고 있지만 이것이 릴리스 업그레이드 문제에 도움이 될지는 알 수 없습니다.

답변1

우리가 한 일은 로컬 미러를 동기화하고메타 릴리스&메타 릴리스-lts파일과 서명 및 릴리스 정보를 포함한 필수 업데이트 프로그램(bionic.tar.gz bionic.tar.gz.gpg 등) 기본 Ubuntu 리포지토리에서.

archive.ubuntu.com/ubuntu/dists/bionic/main/dist-upgrader-all/current/

그런 다음 이를 미러에서 사용할 수 있도록 하고 미러 URL과 일치하는 메타 릴리스 파일의 내용을 수정했습니다.

[메타 릴리스 스니펫]

[METARELEASE]
URI = http://$YOUR_MIRROR_HERE/ubuntu_1604/meta-release
URI_LTS = http://$YOUR_MIRROR_HERE/ubuntu_1604/meta-release-lts

[meta-release-lts 스니펫]

[...]
Release-File: http://$YOUR_MIRROR_HERE/ubuntu/dists/bionic/Release
ReleaseNotes: http://$YOUR_MIRROR_HERE/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/ReleaseAnnouncement
ReleaseNotesHtml: http://$YOUR_MIRROR_HERE/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/ReleaseAnnouncement.html
UpgradeTool: http://$YOUR_MIRROR_HERE/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/bionic.tar.gz
UpgradeToolSignature: http://$YOUR_MIRROR_HERE/ubuntu/dists/bionic-updates/main/dist-upgrader-all/current/bionic.tar.gz.gpg

우리는 사용했었다 "적절한 dist-upgrade -dy" 먼저 모든 패키지를 로컬 PACKAGECACHE로 다운로드/가져옵니다. apt/dpkg 플래그를 사용하여 PACKAGECACHE 및 사용자 정의 source.list 파일을 재정의할 수 있으며 전체 오프라인 업그레이드가 필요하지 않은 경우 건너뛸 수 있습니다.

/etc/apt/apt.conf.d/10upgrade

dir::etc::sourcelist /srv/apt/custom_sources.list;
dir::cache::archives /srv/apt/packages;"

이 설정을 사용하면 로컬 패키지/구성만 사용하여 완전히 업그레이드할 수 있으며 업그레이드 중에 ubuntu.com 저장소와의 통신을 방지할 수 있습니다.

한 가지 주의 사항은 /etc/environment에서 시스템 전체 http 프록시 서버를 사용하는 것입니다. 사용자 정의 env로 업그레이드 프로그램을 호출하여 이를 재정의하세요.

$ export HTTP_PROXY="" 
$ export http_proxy="" 
$ export DEBUG_UPDATE_MANAGER=true

업데이터는 전송 전용이므로 /etc/apt/apt.conf.d/10proxy를 읽지 않습니다.

이러한 단계가 없으면 업그레이드 프로그램은 구성된 프록시를 사용하여 archive.ubuntu.com에 연결하려고 시도하므로 업그레이드가 실패합니다.

그리고 마지막으로 서브셸을 사용하여 호출하여 /var/log/dist-upgrade/main.log의 정보 외에 모든 로그 출력을 포착합니다.

$ (do-release-upgrade -f DistUpgradeViewNonInteractive) &>> $somelog

이것이 도움이 되기를 바랍니다(우리는 처음부터 만들었습니다).

관련 정보