Path
在配置腳本中硬編碼 /usr/bin/env
我正在建構一個沒有 /usr 目錄的 Linux 系統。讓工具鏈工作起來非常容易,但我對很多 auto* 腳本感到惱火:configure 等通常似乎假設
env
在/usr/bin
.一種解決方法是
ln -sv .. /usr
在建構期間執行,但顯然這在美學上沒有吸引力,並且存在路徑/usr
洩漏到最終系統中的風險。(生產中會安裝一個網路/usr
,我不希望基礎系統知道它的存在。)我是否錯誤地安裝了我的自動工具,或者這只是配置經常做出的一個令人討厭的假設?我是否因為不投入而破壞了
env
FHS/usr/bin
?(這對我來說不是一個交易破壞者;我已經通過擁有/inc
and來破壞它/share
。)
你可能會覺得
/usr
不美觀,但這就是宇宙的運作方式。幾乎所有的 Unix 都有/usr/bin/env
——據我所知,現存的唯一沒有的 Unix 是 SCO OpenServer,而且它不是一個大的現存的。如果沒有/usr/bin/env
,您不僅違反了 FHS,還違反了一個極為普遍的慣例。/usr/bin/env
是一個標準位置,即使沒有編寫該標準。它並不是一個可配置的位置:/usr/bin/env
它是每個人都可以假設存在的一個位置。不管你喜不喜歡,解決辦法就是安排擁有
/usr/bin/env
. 刪除/usr
層次結構很好,但如果這樣做,請創建/usr
一個指向/
.如果您要
/usr
通過網路安裝一個,那麼:
/usr
創建一個包含符號連結的bin -> ../bin
目錄。- 確保在您掛載的文件系統上
/usr
,該文件bin/env
是指向的符號連結/bin/env
或工作env
程序。