如何讓 autoconf 使用“install”而不是“mkdir -p”?
當我
sudo make install
在 GNU 存檔中的已編譯包上執行時,它用於mkdir -p
創建目標目錄。我更喜歡使用它,
mkdir -p -m 0755
或者install -d -m 0755
為了確保目標目錄在所有情況下都對每個人都具有適當的權限,而不僅僅是當 root 的 umask 為 0022 時(這對我來說不是真的)。該軟體包正在使用 autoconf/automake,看起來行為是由一個名為
AC_PROG_MKDIR_P
.目前我可以
sudo chmod 0755
在我知道權限錯誤的目錄上執行。但這顯然不是正確的選擇。我會避免研究整個文件以完成“只是那個”。
有什麼提示嗎?
該宏
AC_PROG_MKDIR_P
是功能測試宏。它擴展為 shell 程式碼,用於測試可用的 best-mkdir -p
capable 命令。它使用MKDIR_P
andac_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
文件。但是,我發現在此命令的值中添加了一個可能不需要的選項(此選項的含義在和之間有所不同)。configure``-C``configure``-p``mkdir``install
configure
如果您對從configure.ac
原始碼重新生成腳本感到滿意,您可以MKDIR_P
在呼叫AC_INIT
. 然後執行autoconf
(或autoreconf
)重新創建configure
.最靈活的方法是
MKDIR_P
在目前 shell 會話中使用export MKDIR_P='install -d'
(或任何您需要的)設置環境變數。這不需要修改任何文件,但會影響configure
您在該 shell 會話中執行的所有腳本。