debパッケージのインストール中に失敗した依存関係を処理する方法(dpkgを使用)

debパッケージのインストール中に失敗した依存関係を処理する方法(dpkgを使用)

TL;博士;

誰かが以下を使ってdeb自分のパッケージをインストールする場合sudo dpkg -i example.debpostinst


debパッケージにはいくつかのUI依存関係がありますが、ターゲットシステムがUbuntuサーバーであるとします。
ランニングはsudo dpkg -i example.deb以下を引き起こす可能性があります。

(Reading database ... 59708 files and directories currently installed.)
Preparing to unpack ./example.deb ...
Unpacking example (13) over (11) ...
dpkg: dependency problems prevent configuration of example:
 example depends on libappindicator1; however:
  Package libappindicator1 is not installed.

dpkg: error processing package example (--install):
 dependency problems - leaving unconfigured
Processing triggers for mime-support (3.64ubuntu1) ...
Errors were encountered while processing:
 example

結果は - 抽出されたパッケージ(コンテンツが見つかる場所/opt)で、終了コードは1echo $?)ですがpostinstスクリプトは実行されません。ソフトウェアはUIなしで動作するため、あまり問題はありませんでした(UIのあるインストーラとUIのない​​インストーラの2つを作成するまで)。

問題は、私のスクリプトpostinstにいくつかの重要なステップがありますが、まったく実行されないことです。

おそらく、このようなエラーを処理するための一種のロールバックプロセスや方法が必要になるかもしれませんが、マイナーに見えますが、そうする方法を見つけることができません。

別の方法は、必要なステップを実行することです。後ろに開梱今後依存関係を解決しましたが、似たようなものが見つかりませんでした。

明らかにここに基本的なものが欠けています。どんなアイデアがありますか?


postinst編集:さらに重要なのは、後で不足しているパッケージが表示された場合に実際に行われたことがないため、インストールも不完全/破損することです。簡単に見せて簡単な解決策があると思ったのに見つかりませんね。

答え1

postinst依存関係がないか設定されていない場合、パッケージは実行されません。あなたできる設定でチートを書くにはpreinst(パッケージを解く前にこれが起こったとしても)、GUIの依存関係を「推奨」に移動する方が良い方法だと思います。パッケージはUI依存性なしで動作する可能性があるため、それに依存してはいけませんが、これを推奨すると、パッケージが存在しない場合は構成できます。

関連情報