web-dev-qa-db-ja.com

Dpkg dh_install:debian / tmpディレクトリではなくビルドディレクトリからファイルをコピーしますか?

次のようにdebianパッケージハウジングがあるとします。

project_pkg/
  .git
  project_0.0-1/
     debian/
        install
        ...
     project (git submodule with tagged commit)

次のインストールファイルを使用します。

// .../debian/install
#!/usr/bin/env bash
find $(pwd)/project/path/to/binaries -type f -executable -printf "$(pwd)/project/path/to/binaries/%f usr/bin\n"

また、プロジェクトにmakeエントリポイントがあり、たとえばmake -C project buildが、パッケージ化する必要のあるすべての必要なファイルを生成する場合。

パッケージングプロセス全体のmake/buildコンポーネントは現在機能しています。ただし、理想的には、インストールする必要のあるすべてのファイルをインストールフォルダーから見つけます。

今のところ解決策があります。これには、プロジェクト内のバイナリをdebian/tmp/の外部または/debianから/debian/rulesにコピーすることが含まれます。

しかし、何らかの方法があれば、プロジェクトからファイルをフェッチするようにdh_installを簡単に設定できます。

A)プロジェクトからファイルをフェッチするためにdh_installを取得する方法はありますか?

B)2つのfindコマンドを実行し、バイナリをdebian/tmp dirにコピーするだけですか?

C)それをハックして、installfindコマンドのprintfの前に../..を付ける必要があります

2
donlan
  1. dh_installは、現在のディレクトリ(通常はパッケージの最上位ディレクトリ)からの相対パスを取ります。あなたの場合、それはproject_0.0-1なので、findの呼び出しはproject/path/to/...を出力するはずです。

  2. はい、それもうまくいくでしょう。 dh_installをお勧めしたことは知っていますが、debhelperの最初のルールは、それがサービスのツールであるということです。スキップする方が簡単な場合は、そうすることをお勧めします。

    override_dh_install:
            install -d debian/package/usr/bin
            find project/path/to/binaries -type f -executable -exec install -t debian/package/usr/bin {} + \;
    
  3. それではうまくいかないと思います。

(ほとんどの場合、メインビルドは特定のターゲットにバイナリをインストールできると思いますが、それは別の議論です。)

2
Stephen Kitt