次のように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
の前に../..
を付ける必要があります
dh_install
は、現在のディレクトリ(通常はパッケージの最上位ディレクトリ)からの相対パスを取ります。あなたの場合、それはproject_0.0-1
なので、find
の呼び出しはproject/path/to/...
を出力するはずです。
はい、それもうまくいくでしょう。 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 {} + \;
それではうまくいかないと思います。
(ほとんどの場合、メインビルドは特定のターゲットにバイナリをインストールできると思いますが、それは別の議論です。)