
GNUアーカイブでコンパイルされたパッケージを実行すると、ターゲットディレクトリを作成するsudo make install
ために使用されます。mkdir -p
私は代わりに、ルートのumaskが0022のときだけでなく(私には該当しません)、ターゲットディレクトリがすべての状況ですべての人に適切な権限を持つことを保証するためにmkdir -p -m 0755
orを使用することを好みます。install -d -m 0755
このパッケージはautoconf / automakeを使用し、この動作はというM4マクロによって制御されるようですAC_PROG_MKDIR_P
。
現在のsudo chmod 0755
権限が間違っていることを知っているディレクトリで実行できます。しかし、これは明らかに正しい選択ではありません。
私は「正確にこれを」達成するために文書全体を研究することを避けます。
どのようなヒントがありますか?
答え1
このマクロはAC_PROG_MKDIR_P
機能テストマクロです。これは、利用可能な最良のmkdir -p
機能コマンドをテストするためにシェルコードに拡張されます。使用するコマンドを決定するには、MKDIR_P
and(「キャッシュ変数」)を使用します。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.cache
configure
-C
しかし、、おそらく不要なオプションがコマンド値にconfigure
追加されていることがわかりました(オプションの意味は、およびそれぞれ異なります)。-p
mkdir
install
configure
ソースからスクリプトを再生成することに満足している場合は、呼び出してスクリプトを実行または再生成configure.ac
できます。MKDIR_P
AC_INIT
autoconf
autoreconf
configure
MKDIR_P
最も柔軟な方法は、現在のシェルセッションで環境変数export MKDIR_P='install -d'
(または必要なもの)を設定することです。ファイルを変更する必要はありませんが、configure
そのシェルセッションで実行するすべてのスクリプトに影響します。