パッケージマネージャがインストールする利用可能なディレクトリをどのようにテストしますか?

パッケージマネージャがインストールする利用可能なディレクトリをどのようにテストしますか?

--dry-run複数の依存関係を持つシステム用のインストールスクリプトを作成しようとしていますが、実際のインストールを実行する前にパッケージマネージャ(この場合はUbuntu)を使用する方法を見つけました。apt

ただし、パッケージをインストールしたら、特定の構成ファイルをコピーする必要があります。インストールをコミットする前にターゲットが利用可能であることを確認するにはどうすればよいですか?

部分的にインストールしてシステムを予測不可能なままにするスクリプトを実行したくありませんが、関連するパッケージが存在しない場合は、確認する構成ディレクトリは存在しません。

base.confにコピーしたい/etc/package/system//etc/package/存在しないとしましょう。ターゲットが誤って設定されている場合(スペルミスなどsytem)、コピープロセス中にパッケージをインストールした後にエラーが発生します。これはコピーされたいくつかの構成ファイルの1つである可能性があるため、言うと「ロールバック」する方法はありません。私の究極の目標は、インストール中に部分的にコピーされたファイルを残さないことです。

失敗のシナリオは、複数のファイルをコピーする必要がある場合です。コピーするファイルが3つあり、3番目のファイルの宛先が正しく構成されていない場合でも、最初の2つのファイルをコピーし、3番目のファイルでエラーが発生します。残りのファイルは、次回実行すると追加のエラーが発生します。

PS:依存関係を処理するために実際のパッケージを作成する必要があるかもしれませんが、複雑さと必要な時間がはるかに高く、今はそれに投資したくありません。

ベストアンサー1

apt-fileパッケージをダウンロードしなくてもパッケージの内容を事前に確認できますlist

ただし、これは完全な画像を提供せず、任意のパッケージをインストールしないと変更の完全な画像を構築することはできません。パッケージは、他の変更を実行する管理者スクリプトを提供できます。これは、パッケージがパッケージのメタデータに表示されないディレクトリを作成できることを意味します。管理者スクリプトを分析し、そのパッケージのすべての副作用とパッケージの依存関係を考慮するまでディレクトリを見つけることができません。

あなたのシナリオでは、次の2段階のアプローチが必要だと思います。

  • パッケージ管理システムを使用して、必要なすべてのパッケージをインストールします。
  • 作成されたディレクトリレイアウトとインストールされたファイルに対するすべての期待を確認し、
    • 期待に応えたら、他のすべてのファイルを適切な場所にコピーしてください。
    • そうでない場合は、インストールしたすべてのパッケージを消去してください。これにより、--autoremove自動的にインストールされたすべての依存関係も削除されます。

おすすめ記事