私は公式リポジトリで見つけることができないいくつかの依存関係を持つDebianパッケージを作成しています。これらの他のパッケージを依存関係として指定するだけでは問題は解決されません。これは、インストール自体にapt-get updateを実行し、ソースリポジトリ(私ではない)を/etc/apt/sources.list.dに追加することを含むためです。
もっと:これらのパッケージの1つはDart Language SDKです。 deb をインポートして dpkg を使用するか、Google リポジトリの 1 つを追加しないとインストールできません。私の目標は、パッケージのインストールに関連するステップ数を最小限に抑えることと、きちんとしたパッケージ展開の間のバランスを見つけることです。
したがって、私のパッケージのプリインストールスクリプトからこれらのソースを追加してからapt-get updateを実行したいのですが、主な問題は、パッケージを開いてインストールするとdpkgがロックされることです。それでは、私が望むことを自分で達成できますか?それとも他のオプション/解決方法はありますか?
答え1
私はそれが直接可能であるとは思わない。
しかし、ユーザーがパッケージをインストールしたがまだ追加されていないため、リポジトリからインポートされたようではありません。したがって、私が提案する最初の解決策は、一般的な方法で行うことです。つまり、ユーザーにリポジトリを追加してから(またはユーザーに単純なシェルスクリプトを提供して)、パッケージを正常にインストールすることです。これが私が好む解決策です。シェルスクリプトを実行することは、パッケージをインストールするよりも難しくありません。
2番目の回避策:パッケージをインストールパッケージとして作成します。リポジトリを設定してから、ユーザーに(たとえばdebconfアノテーションまたは他の画面プロンプトを介して)リポジトリから提供された実際のパッケージをインストールするように指示します。
3番目の回避策:同じインストールパッケージを使用しますが、リポジトリで同じパッケージ名を使用し、より高いバージョンを使用します(おそらくepochを使用)。したがって、初期インストール時にリポジトリが設定され、apt upgrade
同様のものが実際のパッケージをインポートします。
第四:これが良いアイデアかどうかはわかりませんが、postinstでdpkgロックを待つバックグラウンドプロセスを開始してインストールを完了します。私の考えでは、at
これbatch
がうまくいくか、一般の/path/to/script &
フォロワーにのみdisown
パッケージのインストールがバックグラウンドで行われることをユーザーに知らせたいと思うかもしれません。
PS:GPGキーを追加する必要があるかもしれません。