2

私はGNUautoconf/ automakeで配布されるプロジェクトに取り組んでおり、awkスクリプトを呼び出す一連のbashスクリプトがあります。bashスクリプトを$PATHに入れたいのですが、awkスクリプトは入れません。これらをプロジェクトにどのように挿入すればよいですか?それらは他のバイナリと一緒に入れる必要がありますか?

また、インストール後にファイルの最終的な場所を特定する方法はありますか?/ usr / local/binが実行可能ファイルの最終的な場所であるとは限らないと思います...

4

4 に答える 4

7

Makefile.am にインストールしたいスクリプトをリストするだけです:

bin_SCRIPTS = foo バー

これにより、make install 中に foo と bar がインストールされます。それらの最終的な場所へのパスを取得するには、foo.in で @bindir@ を使用して、ビルド foo を構成させます。たとえば、configure.ac では次のようになります。

AC_CONFIG_FILES([fooバー])

そしてfoo.inで:

#!/ビン/sh

接頭辞=@接頭辞@
exec_prefix=@exec_prefix@
bindir=@bindir@
echo bindir = $bindir

configure を実行している人は、--prefix、--exec_prefix、または --bindir のいずれかを指定でき、インストールは DESTDIR でリダイレクトされる可能性があることに注意してください。ここで説明する手法を使用すると、DESTDIR は考慮されず、スクリプトはエコーされるパス以外の場所にインストールされます。これは仕様によるものであり、正しい動作です。通常、DESTDIR インストールを使用して tarball を作成し、最終的にスクリプト内の bindir が有効になるようにファイルシステムに展開します。

于 2012-01-24T22:22:47.153 に答える
3

このようなものを Makefile.am に追加します

scriptsdir = $(prefix)/bin
scripts_DATA = awkscript1 awkscript2

この場合、awkscript を $(prefix)/bin にインストールします ($(bindir) も使用できます)。

注: 最初の名前は name + dir (scripts -> scriptsdir)、2 番目の名前は name + _DATA (scripts -> scripts_DATA) にする必要があることを忘れないでください。

于 2008-09-18T16:38:40.587 に答える
2

ジョナサン、あなたの追加の質問に答えて:ビルド時にプレフィックスの値を置き換えたい場合は、次のことを行う必要があります:

  1. スクリプトの名前を「myscript」から「myscript.in」に変更します
  2. configure.acにルールを追加して、下部に生成します
  3. AS_AC_EXPANDと呼ばれる私が作成したマクロを使用します
  4. 次のように使用します。

    AS_AC_EXPAND(BINDIR、$ bindir)

  5. 'myscript.in'で、@ BINDIR @を使用できるようになり、スクリプトがインストールされるフルパスに展開されます。

PREFIXを直接使用しないでください。インストールディレクトリは変更される可能性があるため、渡された値を使用してbindirを構成し、それを拡張する必要があります。

于 2008-10-01T07:57:23.910 に答える
0

awk スクリプトがメインの bin ディレクトリ (prefix/bin) に入らない場合は、それらを適切なサブディレクトリに配置する必要があります。おそらく lib ですが、libexec または share の可能性もあります (awk スクリプトはおそらくプラットフォームに依存しないため)。 .

正解: ソフトウェアは必ずしも /usr/local/bin にあるとは限りません。私のマシンでは、/usr/local/bin は MIS によって管理されているため、インストールするすべてのソフトウェアは /usr/gnu/ の下にあります。./configure --prefix=/usr/gnu を使用して、必要な場所にソフトウェアをインストールします。

PREFIX の値を bash スクリプトに埋め込むことができます。実際には、スクリプトを「コンパイル」してインストール場所を含めます。ビルド テスト中の問題に注意してください。最初に現在のディレクトリを基準にしてスクリプトを見つけ、後で PREFIX を基準にする必要がある場合があります。

于 2008-09-18T16:40:02.300 に答える