.png)
シナリオ:Puppet、Chefなど、バージョン管理ベースのシステム構成で特定のシステム状態を再現する必要があります。これは、システムパッケージのバージョンを明示的に指定することによって行われます。
最近、Debian リポジトリで特定のパッケージバージョンが欠落している問題が発生しました。たとえば、バージョン2.7.5-1 + deb9u1には「パッチ」パッケージが必要ですが、2.7.5-1 + deb9u2のみを使用できます。別のより深刻な例:「linux-headers-4.9.0-9-common」が必要であり(関連カーネルのインストールのため)、「linux-headers-4.9.0-11-common」のみを使用できます。
これにより、システムの特定の状態を再現することができなくなります。
上記のパッケージは(私が実際に触れた)例に過ぎません。私は一般的な問題の理解と解決に興味があります。
このように更新され、「消える」パッケージとパッケージバージョンの背後に隠れているアイデアは何ですか?
以前のバージョン(実際には以前のバージョンではなく数週間前のバージョン)のDebianパッケージをどこで入手できますか?一般的な方法でインストールプロセスを自動化できるはずです。
答え1
特定の設定を正確なバージョンまで再現する機能は次のとおりです。あなたのDebianの要件ではなく、要件です。
Debian は、特定のバージョンで各バイナリパッケージの単一バージョンのみをサポートします。これとは対照的に、特定のバージョンのパッケージの更新によって回帰が発生しないように注意し、これが不可能な場合はこれを記録してください。特定のパッケージの複数のバージョンを維持すると、サポートの負担とテスト要件のみが増加します。たとえば、パッケージマネージャは現在サポートされているバージョンだけでなく、利用可能なすべてのバージョンのライブラリに対して更新されたパッケージをテストする必要があります。つまり重要なバグ(セキュリティ問題を含む)を修正してください。カーネルの場合、これは時々カーネルABIが変更されることを意味するので、ABIをハードコーディングする代わりに(依存パッケージを強制的に再構築するために)いくつかのメタデータをlinux-image-amd64
導入linux-headers-amd64
することができます。パッケージ。
しかし、あなたの状況に対処する方法があります。公開されたすべてのソースコードとバイナリパッケージは、次の場所に保存されます。snapshot.debian.org。バージョン指定された設定を作成するときは、次のいずれかのスナップショットを選択できます。2019年9月のスナップショット)これをリポジトリURLとして使用します。
deb https://snapshot.debian.org/archive/debian/20190930T084755Z/ buster main
最終的にこれに依存する場合は、次のような一種のキャッシュミラーを使用してください。適切 - CacherNG。これにより、スナップショットサーバーの負荷が軽減されるだけでなく、必要なすべてのパッケージのローカルコピーが得られます。
(関連状況源泉パッケージはより複雑で、ライセンスの依存関係のため、アーカイブには特定のバージョンの一部のソースパッケージの複数のバージョンが含まれています。しかし、これとは何の関係もありません。厳密に言えば、Debian はサポートされているリリースでいくつかのバイナリの複数のバージョンを提供します。現在のポイントリリースの現在のバージョンとセキュリティストアのアップデートと、次のリリースポイントのアップデートストアを折りたたみます。したがって、リリースされるたびにポイントバージョンを更新する限り、スナップショットを使用せずに反復可能なバージョン管理システム構成を維持できます。 )
答え2
特定のシステム状態を再現するためにユーザーが制御できないサーバーに頼らないでください。 Debian サーバーは非常に安定していますが、今後何が起こるのかわかりません。これは特に利用可能な他のリポジトリに関連しています。
再現可能なシステム状態を取得するには、自分のイメージを維持する必要があります。これにより、通常のシステムの本番状態と新しい構成の複数のテスト状態を持つことができます。
ストレージ管理ツール適切にリポジトリのミラーを生成する機能。ミラーリングするパッケージを選択し、特定の時点でストレージコンテンツのスナップショットを作成し、複数のミラーまたはスナップショットを単一のストレージにマージできます。これにより、完全に再現可能なシステム状態を得ることができます。
答え3
しかし、Steven Kitの答えもちろん、考えられる解決策は、必要なパッケージのコピーを直接保管する方が安全であると考えています。
システム設定を記録するときは、必ず.deb
保存して/var/cache/apt/archives/
使用することもできますapt-get download
。
apt
潜在的に危険な自動化タスクが実行されないようにするには、システム設定を復元するときに非常に厳しい必要があります。
dpkg
必要なものを自分でインストールする方が簡単かもしれません。