TL;博士;
誰かが以下を使ってdeb
自分のパッケージをインストールする場合sudo dpkg -i example.deb
postinst
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
)で、終了コードは1
(echo $?
)ですがpostinst
スクリプトは実行されません。ソフトウェアはUIなしで動作するため、あまり問題はありませんでした(UIのあるインストーラとUIのないインストーラの2つを作成するまで)。
問題は、私のスクリプトpostinst
にいくつかの重要なステップがありますが、まったく実行されないことです。
おそらく、このようなエラーを処理するための一種のロールバックプロセスや方法が必要になるかもしれませんが、マイナーに見えますが、そうする方法を見つけることができません。
別の方法は、必要なステップを実行することです。後ろに開梱今後依存関係を解決しましたが、似たようなものが見つかりませんでした。
明らかにここに基本的なものが欠けています。どんなアイデアがありますか?
postinst
編集:さらに重要なのは、後で不足しているパッケージが表示された場合に実際に行われたことがないため、インストールも不完全/破損することです。簡単に見せて簡単な解決策があると思ったのに見つかりませんね。
答え1
postinst
依存関係がないか設定されていない場合、パッケージは実行されません。あなたできる設定でチートを書くにはpreinst
(パッケージを解く前にこれが起こったとしても)、GUIの依存関係を「推奨」に移動する方が良い方法だと思います。パッケージはUI依存性なしで動作する可能性があるため、それに依存してはいけませんが、これを推奨すると、パッケージが存在しない場合は構成できます。