公式リポジトリにはないいくつかの依存関係を持つDebianパッケージを作成しています。これらの他のパッケージを依存関係として指定するだけでは、apt-get updateを実行し、ソースリポジトリ(私のものではない)を/etc/apt/sources.list.dに追加するだけなので、それを削減することはできません。
詳細:これらのパッケージの1つはDart言語SDKです-これは、debを取得してdpkgを使用するか、Googleのリポジトリの1つを追加することによってのみインストールできます。私の目標は、パッケージのインストールに含まれるステップ数を最小限に抑えることと、クリーンなパッケージの展開との間のバランスを見つけることです。
そのため、パッケージのインストール前スクリプトでこれらのソースを追加してからapt-get updateを実行したいのですが、主な問題は、パッケージを開いてインストールすると、dpkgがロックされることです。それで、私が直接求めていることを達成することは可能ですか、または他にどのようなオプション/回避策がありますか?
直接可能だとは思いません。
しかし、どういうわけか、ユーザーはパッケージをインストールしました。まだ追加されていないため、リポジトリからではないようです。したがって、私が提案する最初の回避策は、通常の方法で行うことです。ユーザーにリポジトリを追加してもらい(または、ユーザーに簡単なシェルスクリプトを提供して)、通常どおりパッケージをインストールします。これが私の推奨する解決策であり、シェルスクリプトの実行はパッケージのインストールよりも難しくありません。
2番目の回避策:パッケージをセットアップパッケージにするだけです。リポジトリをセットアップしてもらい、ユーザーに(たとえば、debconf noteまたは画面上の他のプロンプトを介して)実際のパッケージ(リポジトリから取得される)をインストールするように指示します。
3番目の回避策:同じセットアップパッケージですが、リポジトリで同じパッケージ名を使用します。バージョンが高くなります(おそらくエポックを使用します)。したがって、最初のインストールでリポジトリがセットアップされ、次にapt upgrade
または同様のものが実際のパッケージをプルします。
4番目:これが良い考えかどうかはわかりませんが、postinstで、dpkgロックを待機するバックグラウンドプロセスを起動してから、インストールを完了します。 at
またはbatch
はこれで機能すると思いますが、通常の/path/to/script &
の後にdisown
が続きます。パッケージのインストールがバックグラウンドで終了することをユーザーに通知することをお勧めします。
PS:おそらくGPGキーも追加する必要があります。