特定の状態にapt-getをアップグレードする

特定の状態にapt-getをアップグレードする

テストサーバーと本番サーバーという2つのサーバーがあるとします。まずapt-get upgradeテストサーバーでやりましょう。その後、2週間の広範なテストを行った後、本番サーバーがパッケージ化されたときとまったく同じ状態になることを望みます。apt-get upgrade常に最新の状態を維持せずに特定の状態を達成することは可能ですか?

ベストアンサー1

OPは、サーバーがどの展開が使用されているかを教えてくれませんでした。したがって、デフォルトではDebianが「apt発明」し、必要なサービスはDebianでのみ利用可能であるため、Debianであると仮定します。

単一のパッケージの場合は、そのバージョンを強制するの=が良いと便利ですが、特にまだ利用可能な場合は復元することをお勧めしますが、パッケージグループの場合、満たされていない依存関係のために迅速に問題になる可能性があります。

できることは、以下で構築されたリポジトリURLを使用することです。https://snapshot.debian.org/。このサービスは、2009年以降に作成されたすべてのパッケージバージョンのコピーを保持します。2010年から公式発足:

さらに、スナップショットサービスを使用すると、管理者は指定された日付のアーカイブビューを使用して予測可能でテスト済みのパッケージセットをインストールできます。この機能により、管理者はステージング環境でアップグレードパスをテストし、本番環境でプロセスを繰り返して完全にテストされたアップグレードを実行していることを確認できます。スナップショットはアーカイブ全体とすべてのスイートをカバーするため、制御された方法でテストを追跡したい環境だけでなく、すべての信頼できる更新プログラムをロールアウトする前に完全に監査したいより厳格な変更制御機能を備えた環境にも適用できます。

最初の要件は、httpsトランスポートが利用可能でなければならないことです。 (apt-get install apt-transport-https申し訳ありませんが、同時にアップグレードされた可能性があるいくつかの依存関係を取得できます。)

2週間前の2018-12-07のパッケージが欲しいとしましょう。ウェブサイトの指示に従って、以下を閲覧できます。

https://snapshot.debian.org/archive/debian/20181207/

これは以下を指します。より細かいURL、おそらくUTC時間でしょう。その後、必要に応じて「時間を通して」ナビゲートできます。これには少し次の変更」。

適切な時期になると、これを resources.list ファイルのデフォルトの deb URL として使用します。

たとえば、/etc/apt/sources.d/snapshot-20181207.listコンテンツは次のようになります。

deb https://snapshot.debian.org/archive/debian/20181207T090635Z/ stretch main

スナップショットは以前のパッケージバージョンを使用する過去なので、デフォルトの選択をaptにしておくと、とにかく最新バージョンを使用し、そこで利用可能なバージョンを常に無視します。 aptフラグ-tはまだ同じバージョンなので、この場合は役に立ちません。だから適切な好み調整が必要です。たとえば、.prefファイルに で終わる項目があります(ここでは基本設定の順序が重要な場合があります)。/etc/apt/preferences.d//etc/apt/preferences.d/00-snapshot-20181207.list

Package: *
Pin: origin "snapshot.debian.org"
Pin-Priority: 900

これは、snapshot.debian.orgのすべてのパッケージの優先順位をデフォルト(および最新の)パッケージの500より高い900に設定し、セキュリティを含む他のリポジトリよりも短期間の優先順位を与えます。主なアップデートソース。追加されたときよりも優先順位が低いため、-t stable2018-12-07ステータスにアップグレードすることと今日のステータスにアップグレードすることの違いを比較できます。

1001を使用すると、パッケージがダウングレードされることを許可(および強制)して危険になる可能性があります(たとえば、パッケージの変更によってファイルがあるパッケージから別のパッケージに移動すると、ファイルがダウングレードされる可能性があります)。 )、それでもまだ便利です。

apt-get updateリリースファイルが古くなっていると文句を言う場合(Webサイトに記載されているように12日後に発生します)、ソースエントリにapt-get -o Acquire::Check-Valid-Until=false updateまたは(Debian 9以降)追加を使用してスキャンを無効にする必要があります。[check-valid-until=no]これがhttpsトランスポートを使用する理由です。とにかく追加のセキュリティ層があるからです。したがって、内容をsnapshot-20181207.list次のように置き換えてください。

deb [check-valid-until=no] https://snapshot.debian.org/archive/debian/20181207T090635Z/ stretch main

アップデート:セキュリティは別々のスナップショットアーカイブにあります。Debian セキュリティ。したがって、このアイテム(または他の日付のアイテム)も追加する必要があります。

deb [check-valid-until=no] https://snapshot.debian.org/archive/debian-security/20181206T212649Z/ stretch/updates main

通常どおり、apt-get updateすべてのapt-get upgradeパッケージをバージョン2018-12-07にアップグレードする必要があります。

おすすめ記事