Equivs-buildでファイルの場所を強制する方法

Equivs-buildでファイルの場所を強制する方法

.debを使用して作成したファイルを使用してインストールしたいファイルがありますequivs-build。私が理解できないのは、ファイルに必要な構文です.equivs

これは私のファイルレイアウトです。

myapp.equivs
myapp/
  files/
    script.sh

私が言いたいのは、equivs-build設定script.shファイルがにあることです/usr/share/myapp/script.sh。私はいくつかのテストをしましたが、次の構文のどれもFiles期待どおりに機能しないようです。

テスト1

Files: ./myapp/files/script.sh /usr/share/myapp/script.sh

結果:ファイルがにインストールされました/usr/share/myapp/script.sh/myapp/files/script.sh

テスト2

Files: ./demo/files/script.sh /usr/share/myapp/

結果:ファイルがにインストールされました/usr/share/myapp/myapp/files/script.sh

テスト3

Files: ./demo/files/script.sh /usr/share/myapp

結果:ファイルがにインストールされました/usr/share/myapp/myapp/files/script.sh

すべての場所にファイルをインストールするようにquivs-buildにどのように指示しますか?

答え1

私も同じ問題があります。私の考えでは、Equivsは非常にシンプルなパッケージを作るために作られたと思います。より深いソースディレクトリ構造を持つパッケージではありません。

回避策として、次のようにequals-build perlスクリプトを「修正」しました。

/usr/bin/equivs-build(約70行目):

die "Cannot parse Files line: '$_'\n" unless m:^\s*(\S+)\s+(\S+)/?\s*$:;
#$install_files{"$2/$1"} = $1;
$install_files{"$2"} = $1;    # do not append source path to target path

これで、制御ファイルのファイル名を使用して完全なソースパスとターゲットパスを指定できます。つまり

Files: opt/sounds/test.wav /opt/sounds/test.wav
 opt/sounds/test4.wav /opt/sounds/default.wav

この方法では、深いソースディレクトリ構造を使用できます。ボーナスとして必要な場合は、別の宛先ファイル名を指定することもできます。

お役に立てば幸いです。

関連情報