GNUアーカイブからコンパイルされたパッケージでSudo make install
を実行すると、mkdir -p
を使用して宛先ディレクトリが作成されます。
ルートのumaskが0022の場合だけでなく、すべての状況で宛先ディレクトリに適切なアクセス許可があることを確認するために、代わりにmkdir -p -m 0755
またはinstall -d -m 0755
を使用することをお勧めします(これは正しくありません)。私のために)。
パッケージはautoconf/automakeを使用しており、動作はAC_PROG_MKDIR_P
と呼ばれるM4マクロによって制御されているようです。
現時点では、間違ったアクセス許可があることがわかっているディレクトリでSudo chmod 0755
を実行できます。しかし、これは明らかに正しい選択肢ではありません。
「まさにそれ」を達成するために、ドキュメント全体を研究することは避けたいと思います。
ヒントはありますか?
マクロAC_PROG_MKDIR_P
は機能テストマクロです。利用可能な最高のmkdir -p
対応コマンドをテストするシェルコードに拡張されます。 MKDIR_P
および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
を必要なコマンドに設定することで、これを「永続的」にすることができるはずです。この変数は、configure
スクリプトで直接設定するか(醜い)、config.cache
オプションを1回使用してconfigure
を実行した後に作成した-C
ファイルを変更することで設定できます。 しかし、私はconfigure
がこのコマンドの値に-p
オプションを追加することを発見しました。 (このオプションの意味は、mkdir
とinstall
で異なります)。
configure.ac
ソースからconfigure
スクリプトを再生成することに満足している場合は、MKDIR_P
を呼び出した直後の値にAC_INIT
を設定できます。次に、autoconf
(またはautoreconf
)を実行して、configure
を再作成します。
最も柔軟な方法は、現在のシェルセッションでMKDIR_P
環境変数をexport MKDIR_P='install -d'
(または必要なもの)で設定することです。これにはファイルの変更は必要ありませんが、そのシェルセッションで実行するすべてのconfigure
スクリプトに影響します。