
我有一個 perforce 版本控制客戶端的可執行檔 ( p4
)。我無法將其放入,/opt/local
因為我沒有 root 權限。是否有需要放置的標準位置$HOME
?
檔案系統層次結構是否有一個約定,規定本地可執行檔/二進位檔案需要放置在$HOME/bin
?
我找不到上面提到的這樣的約定FHS 的維基百科文章。
另外,如果確實存在約定,我是否必須明確包含$HOME/bin
目錄的路徑或目錄的位置bin
?
答案1
一般來說,如果非系統安裝和維護的二進位檔案需要在系統範圍內可供多個使用者訪問,則管理員應將其放入/usr/local/bin
.下面有一個完整的層次結構/usr/local
,一般用於本地編譯安裝的軟體包。
如果您是二進位檔案的唯一用戶,請安裝到$HOME/bin
或$HOME/.local/bin
是合適的位置,因為您可以自己安裝它,並且您將是唯一的消費者。如果您從原始程式碼編譯軟體包,那麼在您的$HOME
或$HOME/.local
目錄中建立部分或完整的本機層次結構也是合適的。使用$HOME
,完整的本地層次結構將如下所示。
$HOME/bin
本地二進位文件$HOME/etc
本地二進位檔案的主機特定係統配置$HOME/games
本地遊戲二進位檔案$HOME/include
本地 C 頭文件$HOME/lib
當地圖書館$HOME/lib64
本地 64 位元庫$HOME/man
本地線上手冊$HOME/sbin
本機系統二進位檔案$HOME/share
本地架構獨立的層次結構$HOME/src
本地原始碼
運行時,您應該透過指定安裝預設值的前綴configure
來定義安裝的本機層次結構。$HOME
./configure --prefix=$HOME
現在,當make && make install
運行時,編譯的二進位檔案、套件、手冊頁和庫將安裝到您的$HOME
本機層次結構中。如果您沒有手動建立$HOME
本機層次結構,make install
則會建立軟體包所需的目錄。
安裝後$HOME/bin
,您可以新增$HOME/bin
到您的$PATH
二進位檔案或使用絕對$PATH
.某些發行版將預設包含$HOME/bin
在您的中。$PATH
您可以透過以下方式進行測試:echo $PATH
查看是否$HOME/bin
存在,或將二進位檔案放入$HOME/bin
並執行which binaryname
。如果返回時帶有$HOME/bin/binaryname
,則$PATH
預設為您的。
答案2
作為尤瑟提到,/usr/local
本質上是作為系統管理員安裝的軟體的前綴,而/usr
應該用於從發行版軟體包安裝的軟體。
背後的想法是避免與分散式軟體(例如rpm
和deb
軟體包)發生衝突,並讓管理員完全控制「本地」前綴。
這意味著管理員可以安裝自訂編譯的軟體,同時仍使用 Debian 等發行版。
來自 FHS
放置在 / 或 /usr 中的軟體可能會因係統升級而被覆蓋(儘管我們建議發行版在這些情況下不要覆蓋 /etc 中的資料)。因此,如果沒有充分的理由,本地軟體不得放置在 /usr/local 之外。
安裝用戶特定軟體時,烏瑟爾建議使用$HOME
作為前綴,因為這可以確保您擁有寫入權限。就我個人而言,我覺得這$HOME/.local
是一個更優雅的解決方案,因為它避免了你(希望如此)漂亮整潔的主目錄的混亂!
$HOME/.local/share
並且$HOME/.local/bin
已經在使用freedesktop.org XDG 基本目錄規範,並且發行版被要求添加$HOME/.local/bin
到,所以當你在做的時候,$PATH
不需要太多的想像來製作,等等。$HOME/.local/lib
如果您真的不希望前綴成為隱藏目錄,您也可以輕鬆建立指向它的符號鏈接,例如:
ln -s .local ~/local
邊註
值得注意的是.config
(not .local/etc
) 是預設值$XDG_CONFIG_HOME
用於使用者特定的設定檔。我還應該指出,不幸的是,很大一部分軟體會忽略 XDG 並在任意位置(通常在 的根目錄中$HOME
)建立設定檔。另請注意,如果需要$XDG_CONFIG_HOME
預設值,則可以取消設定。$HOME/.config
奇怪的是,沒有為發行版的預設設定檔保留的目錄,因此無法知道其中的檔案是/etc
由發行版提供還是由系統管理員編輯。
答案3
XDG 基本目錄規範版本 0.8 規定本地可執行檔應放置在〜/.local/bin:
使用者特定的可執行檔可以儲存在 $HOME/.local/bin 中。發行版應確保此目錄顯示在 UNIX $PATH 環境變數中的適當位置。
如果您的發行版遵循規範,那麼您不必「明確包含路徑」。這上一個問題嘗試確定哪些發行版可以執行此操作。
答案4
看起來像/usr/local/bin
根據網際網路網站維基技術。
有關資訊/usr/bin
來自檔案系統層次結構標準,他們將該資料夾定義為系統上可執行命令的主目錄。
/usr/bin
之間與/usr/local/bin
來自之間的附加信息維基技術:
/usr/bin
是作業系統提供的普通使用者所使用的可執行檔的位置。例如,通常不是核心作業系統所需的文件,也不是 root 使用者存取的文件,但也可以是。
/usr/local/bin
是您新增至系統以供所有使用者用作通用系統檔案的所有附加可執行檔案的位置,但它們不是作業系統支援的官方檔案。
總的來說,/usr/bin
這是作業系統提供二進位檔案的地方。/usr/local/bin
是使用者下載二進位檔案的地方。