ローカルの Aptly ミラーを使用して (Ubuntu) do-release-upgrade を実行する (メタリリース ファイルが欠落している)

ローカルの Aptly ミラーを使用して (Ubuntu) do-release-upgrade を実行する (メタリリース ファイルが欠落している)

背景

現在、規制上の理由により、Aptly スナップショットを使用してローカル deb ミラーを設定しています (例: サーバーはインターネット経由でパッケージを取得できません)。これはすべて、通常のアップグレードでは問題なく機能します。リリース アップグレード (Ubuntu 18.04 から 20.04 へ) を実行する必要がある場合、通常は VM を置き換えるだけで済みますが、一部のサーバーでは、ミラーを使用してインプレース リリース アップグレードを実行する必要があります。

現在の状態

設定しました/etc/アップデートマネージャー/メタリリースノードにミラーを指すように設定していますが、もちろんメタリリースとメタリリース LTSファイルをAptlyにコピーします。メタリリースAptly から提供されるファイルは、さまざまな外部 URL、インストーラー、ドキュメントなどを参照するため、まだ機能しません。また、URL を変更して Aptly を指すようにしても、それらのファイルはすべて存在しないことになります。そのため、それらもコピーして提供する必要があります。

解決?

解析する必要があるか?メタリリースファイル、すべてのインストーラーなどをダウンロードし、それらを提供して独自のものを生成しますメタリリースそこからファイルを抽出できますか? もっと簡単な方法があるはずです! これをゼロから構築する必要がありますか、それともツールが利用できますか?

https://www.aptly.info/

PS. 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

[メタリリース 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

私たちは「apt ディストリビューションアップグレード -dy" を実行して、まずすべてのパッケージをローカルの PACKAGECACHE にダウンロード/取得します。apt/dpkg フラグを使用して PACKAGECACHE およびカスタムの source.list ファイルを上書きできます。完全なオフライン アップグレードが必要ない場合は、これをスキップできます。

/etc/apt/apt.conf.d/10アップグレード

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

これが役に立つことを願っています(私たちはこれをゼロから構築しました)

関連情報