來自 FHS

來自 FHS

我有一個 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應該用於從發行版軟體包安裝的軟體。

背後的想法是避免與分散式軟體(例如rpmdeb軟體包)發生衝突,並讓管理員完全控制「本地」前綴。

這意味著管理員可以安裝自訂編譯的軟體,同時仍使用 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是使用者下載二進位檔案的地方。

相關內容