質問:

質問:

質問:

私のソースからDEBパッケージを作成しようとしています。
依存性処理を除いて、すべてが正常です。

私が知っている限り、依存関係を表示する最も本当の方法はファイルDependsのセクションにリストすることですcontrol。私のアプリケーションでは、2つの既存のパッケージ(aaptおよびzipalignただ最近の Debian では (≥提示)とUbuntu(≥ウィリー)リポジトリなので、以前のバージョンに.debをインストールするのに間違いなく問題があるはずです。

アイデア:

この問題についていくつかの考え方:

  • 必要なスタンドアロンバイナリ(私の.debの一部)を/usr/bin
    • プロフェッショナルバージョン:必要な依存関係が私のパッケージにスタンドアロンバイナリとして存在するため、そのDepends部分は使用されず、欠落しているストレージパッケージは問題になりません。
    • 健康: ターゲット バイナリが別のパッケージの一部としてターゲット コンピュータに既に存在する場合、エラーが発生し、dpkgユーザーに--force-overwriteオプションを渡すよう強制するのは良い考えではありません。
  • 必要なスタンドアロンバイナリ(私の.debの一部)を/usr/share/myapp
    • プロフェッショナルバージョン:アプリケーションは独自の別々のディレクトリを使用してサードパーティのバイナリを保存するため、既存のパッケージを潜在的に変更しません(そしてDependsその部分は不要です)。
    • 健康:このshareディレクトリはアーキテクチャに依存しないデータを格納するために使用されますが、バイナリファイルはそうではありません。
  • アプリケーション全体をこの/opt/myappディレクトリにインストールします。
    • プロフェッショナルバージョン:この方法はFHS構造に違反せず、ファイルを完全に隔離されたディレクトリに保存します。
    • 健康: しかし、これは特にオープンソースソフトウェアの場合、本物のUNIX方式ではありません。
  • 弱い関係 Recommendsの代わりにそのセクションを使用し、ユーザーに欠落しているパッケージを入手する方法についていくつかのガイドラインを提供してください。Depends
    • 健康: .deb パッケージ自体が意味を失いました。

これらの方法のどれも私には適していません。この問題を処理する標準的な方法はありますか?確実な解決策がありませんか?たとえば、ある種の条件付きインストールが役に立ちます(whichコマンドが何も出力しない場合にのみサードパーティのバイナリをインストールするなど)。

どんなアイデアや提案でも大変感謝いたします。

ベストアンサー1

(メインパッケージに加えて)別々のパッケージを提供し、独自のバージョンがあることを確認aaptzipalignてください~(例zipalign-21-4~kefir1.deb::)。それからそれをデフォルトのパッケージと一緒にリポジトリに入れますDepends: aapt, zipalign(私はリポジトリをホストするのが簡単でreprepro難しいことではありません)。

これはこれDebian方式(同じ方式)backports.debian.org有効) - システムがJessieであり、提供されている場合はaaptそのシステムが使用されます(パッケージバージョンにチルダがあるため、最後の手段としてのみ使用されます)。システムが古いDebianの場合にのみ追加のパッケージが抽出されます。ユーザーはソフトウェアパッケージのアップグレード/セキュリティ修正を簡単に入手できます。

追加の利点は、Jessieからアップグレードするときに公式パッケージが抽出され、以前の追加パッケージを上書きすることです(もちろん、特定のバージョンまたは追加パッケージに特に依存しない限り)。これにより、以前/冗長バージョンがなくなり、ユーザーはDebianセキュリティチームのパッチなどの追加の利点を得ることができます。

おすすめ記事