私はモノラルを使用するプログラム用の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.sh
sedを呼び出す前の実際のファイルです。
#!/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/rules
dhまたはcdbsに設定するか、自動的に設定する必要があります。あなたの質問によると、実際には何とか設定されていると思います。