Chmod

如何讓 autoconf 使用“install”而不是“mkdir -p”?

  • April 7, 2018

當我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 -pcapable 命令。它使用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為所需的命令來使其“永久”。該變數可以直接在腳本中設置(醜陋),也可以在使用該選項執行一次 後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 會話中執行的所有腳本。

引用自:https://unix.stackexchange.com/questions/435995