Software-Installation
作為非 root 使用者,我應該在哪里安裝從原始碼建構的軟體包?
我正在以非 root 使用者的身份從原始碼建構幾個(> 10)包,並希望安裝它們(為了這個問題,請選擇
--prefix=
值)。兩個明顯的選擇是:
- 使用我的主目錄,這意味著我將擁有
etc/
、usr/
和var/
類似的子目錄,每個子目錄中都有不同包的文件。但是大多數包不互動,所以將它們的文件放在同一個子目錄中沒有多大意義,我認為這會讓解除安裝變得很痛苦- 為每個包使用單獨的目錄,例如
--prefix=$HOME/myfooapp
,--prefix=$HOME/mybarlib
等等。這將使所有內容分開,但現在我的主目錄將填滿我不想看到的多個子目錄。此外,一些包確實互動,所以我不介意它們在同一個地方在一起(不需要使 PATH 超長)。我還有其他選擇嗎?我的意思是,我可以做到
- 像選項 2。但在我的主目錄的子目錄中,例如
--prefix=$HOME/opt/myfooapp
,--prefix=$HOME/opt/mybarlib
這是我能做的最好的嗎?
最終我決定了
$HOME/opt/myfooapp
。原因是:
- 選項 2 和 3 允許我分離不同包的文件層次結構;當您以 root 使用者身份工作時,這不是一個考慮因素 - 因為您有一個包管理器來幫助您。我不…
- 只有選項 3 可以避免將我的主目錄與與軟體包安裝有關的多個目錄弄亂。
我認為這通常是一種網站約定。對於長時間執行的安裝,我不願意依賴 $HOME 樹並且更傾向於使用 /opt,即使這意味著設置 /opt// 具有適當的權限和可能的相關目錄以用作數據等的標準位置這與您可以指出的一些合理解釋相一致,例如https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
對我來說,除了盡量不直接違反約定之外,對您使用結構的最大影響是對伺服器的使用。您是否打算將伺服器映像替換到不同的環境或軟體/數據中?您是否使用共享文件系統或需要特定分區來優化軟體?您想在任何備份等中包含這些目錄嗎?您想與其他使用者帳戶共享執行權限或數據嗎?您可能還需要考慮在共享 shell 配置文件登錄中設置某些環境變數,以擴展預設路徑和常用的建構標誌。
希望這能給人們一些思考。當然,如果在本地機器上,那麼做感覺正確的事情,但不排除使用 /opt 因為這是被忽略的目錄樹;^)