依存関係をインストールしないように強制的にapt / yum

依存関係をインストールしないように強制的にapt / yum

パッケージをインストールするときにインストールするかどうかをapt示すコマンドラインオプションはありますか?yumDepends

Python/pipでは、次のようにできます。

pip3 install --no-deps -r requirements.txt

基本的な

私たちは定期的にドッカーのイメージを構築します。このファイルには、apt特定のバージョンを添付せずにパッケージをインストールする方法についての説明があります。私たちは間違っていませんが、突然テストが中断され始めたため、プロセスは非常に不安定でした。私たちはパッケージをテストされた特定のバージョンに固定したいと思います。

例:

$ sudo apt-get install python3=3.5.1-3

問題は、必要なパッケージを特定のバージョンに設定しても、そのパッケージ内で制御できない依存関係があることです。これらの情報はいつでも更新でき、ラグはユーザーの下から削除されます。

私たちは各パッケージを完全な依存関係リストに分類し、それをapt / yumにそのリストだけをインストールし、他のものをインストールしないように指示したいと思います。私たちは常に開発者がこれらのパッケージのバージョンを固定するように強制することができます(特にpipの要件.txtなどのすべてのバージョンを1つのファイルに保存する場合)。

ベストアンサー1

これはあなたが言及した問題に対する答えではありませんが、根本的な状況を解決するのに役立ちます。

バージョン不変のパッケージソースが必要な場合、従来の解決策はプライベートパッケージストアを使用することです。つまり、選択したディストリビューションのリポジトリをミラーリングし、そのままにしてパッケージを部分的にのみ変更します。後者の部分はテストの中で最も痛い部分です。なぜなら、さまざまなテストシナリオは通常、共通のデフォルトリポジトリと比較して異なるパッケージアップグレードが必要であり、最終的に複数のリポジトリを維持することになるからです。

コンテナは、イメージレジストリと組み合わせるとより簡単なソリューションを提供します。通常どおり基本テストイメージをビルドし、すべてのテスト依存関係を含めます。

FROM debian:10
RUN apt update && apt upgrade && apt install ...

これをビルドし、適切なタグ(日付、悪い場合)を使用して(個人用)レジストリにプッシュします。これにより、テストシーンは、変化しない対応する画像に基づいて行うことができる。特定のパッケージをアップグレードする必要があると判断した場合は、新しいイメージを使用してベースイメージに適切な依存関係を作成します。

FROM testbase:20200229
RUN apt update && apt install ...

このようにアップグレード(またはインストール)したいパッケージのみをリストします。それ以外の場合は、そのパッケージのみがアップグレードされます。必要独自の依存関係に最新のパッケージを含めます。この場合、パッケージも一緒に含まれます(ただし、これを回避する簡単な方法はないので、とにかく処理する必要があります)。

適切なタグ付きイメージを参照する限り、既存のテストに影響を与えることなく、デフォルトのテストイメージを定期的に再構築してプッシュできます。

おすすめ記事