autoconfで "mkdir -p"の代わりに "install"を使用するにはどうすればよいですか?

autoconfで

GNUアーカイブでコンパイルされたパッケージを実行すると、ターゲットディレクトリを作成するsudo make installために使用されます。mkdir -p

私は代わりに、ルートのumaskが0022のときだけでなく(私には該当しません)、ターゲットディレクトリがすべての状況ですべての人に適切な権限を持つことを保証するためにmkdir -p -m 0755orを使用することを好みます。install -d -m 0755

このパッケージはautoconf / automakeを使用し、この動作はというM4マクロによって制御されるようですAC_PROG_MKDIR_P

現在のsudo chmod 0755権限が間違っていることを知っているディレクトリで実行できます。しかし、これは明らかに正しい選択ではありません。

私は「正確にこれを」達成するために文書全体を研究することを避けます。

どのようなヒントがありますか?

ベストアンサー1

このマクロはAC_PROG_MKDIR_P機能テストマクロです。これは、利用可能な最良のmkdir -p機能コマンドをテストするためにシェルコードに拡張されます。使用するコマンドを決定するには、MKDIR_Pand(「キャッシュ変数」)を使用します。ac_cv_path_mkdir

MKDIR_Pディレクトリの作成に使用するコマンドに値を設定できます。使用するコマンドは、個々のディレクトリだけでなく、そのディレクトリがまだ存在しない場合に親ディレクトリを作成できる必要があります(mkdir -pそうするように)。

通常:

$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/local/bin/gmkdir -p
checking for gawk... gawk
...

スーツ付きMKDIR_P

$ ./configure MKDIR_P='install -d -m 0755'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... install -d -m 0755
checking for gawk... gawk
...

~によると文書ac_cv_path_mkdir、キャッシュ変数を目的のコマンドに設定して「永続的」にすることができます。変数はスクリプトで直接設定するか(ugly)、configure生成されたファイルをこのオプションで一度実行した後に変更できます。config.cacheconfigure-Cしかし、、おそらく不要なオプションがコマンド値にconfigure追加されていることがわかりました(オプションの意味は、およびそれぞれ異なります)。-pmkdirinstall

configureソースからスクリプトを再生成することに満足している場合は、呼び出してスクリプトを実行または再生成configure.acできます。MKDIR_PAC_INITautoconfautoreconfconfigure

MKDIR_P最も柔軟な方法は、現在のシェルセッションで環境変数export MKDIR_P='install -d'(または必要なもの)を設定することです。ファイルを変更する必要はありませんが、configureそのシェルセッションで実行するすべてのスクリプトに影響します。

おすすめ記事