私のDebianパッケージに.shラッパーを作成する

私のDebianパッケージに.shラッパーを作成する

私はモノラルを使用するプログラム用のDebianパッケージを作成しようとしています。私のmake install目標は、現在すべてのバイナリを配置し、/usr/local/lib/mypackageモノラル/usr/local/binで実際のバイナリを呼び出す小さな実行可能スクリプトを作成します。 1行のコードを使用してプレースホルダをPREFIX実際のインストールパスに置き換えます。

install: DESTDIR=/usr/local
install: LIBDIR=$(DESTDIR)/lib
install: BINDIR=$(DESTDIR)/bin
install: $(PHONIX) $(ANTLR) doc
    install -m 0755 -d $(LIBDIR)/phonix
    install -m 0755 -t $(LIBDIR)/phonix $(PHONIX) $(ANTLER)
    install -m 0755 -D phonix.sh $(BINDIR)/phonix
    sed -i "s!PREFIX!$(LIBDIR)!" $(BINDIR)/phonix

以下で実行しdh_make、必要に応じてパッケージングディレクトリをポイントします。すべてがパッケージの正しい場所にインストールされますが、呼び出しは私のローカルパッケージディレクトリへのパスをスクリプトに入れ、文字通りパッケージに配置します。実際にターゲットシステムにパッケージをインストールすると、明らかに動作しません。$(LIBDIR)$(BINDIR)sed

呼び出しをインストール後にスクリプトに移動する必要があると思いますsedが、インストール後の手順でローカルインストールディレクトリを取得する方法がわかりません(my$(LIBDIR)とmyと道徳的に同じです。$(BINDIR)それとも良い方法がありますか?


編集する:これはphonix.shsedを呼び出す前の実際のファイルです。

#!/usr/bin/sh

exec mono PREFIX/phonix.exe

ご覧のとおり、ただこのファイルの目的は、モノベースの.exe用の実行可能なラッパーを提供することです。 sed呼び出しPREFIX$(LIBDIR)。だから私が本当に知っておくべきことターゲットシステムで.exeの実際のインストール場所を取得する方法ラッパースクリプトはこのように動作しますか?

ベストアンサー1

DESTDIR非標準方式で使用しています。パッケージのインストールプレフィックスではなく、パッケージ構築などの「fakeroot」プレフィックスです。

より一般的な作成方法は次のとおりです。

prefix = /usr/local
bindir = $(prefix)/bin
libdir = $(prefix)/lib

install: $(PHONIX) $(ANTLR) doc
    install -m 0755 -d $(DESTDIR)$(libdir)/phonix
    install -m 0755 -t $(DESTDIR)$(libdir)/phonix $(PHONIX) $(ANTLER)
    install -m 0755 -D phonix.sh $(DESTDIR)$(bindir)/phonix
    sed -i "s!PREFIX!$(libdir)!" $(DESTDIR)$(bindir)/phonix

DESTDIRパッケージの makefile を空白のままにします。debian/rulesdhまたはcdbsに設定するか、自動的に設定する必要があります。あなたの質問によると、実際には何とか設定されていると思います。

おすすめ記事