Directory-Structure

/opt 和 /usr/local 有什麼區別?

  • June 3, 2020

根據Filesystem Hierarchy Standard/opt用於“安裝附加應用程序軟體包”。 /usr/local是“供系統管理員在本地安裝軟體時使用”。這些案例看起來非常相似。未包含在發行版中的軟體通常預設配置為安裝在任何一種/usr/local/opt沒有特定押韻或理由的情況下安裝。

我是否遺漏了一些差異,或者兩者都做同樣的事情,但由於歷史原因而存在?

雖然兩者都旨在包含不屬於作業系統的文件,/opt並且/usr/local不打算包含相同的文件集。

/usr/local是安裝管理員建構的文件的地方,通常使用make命令(例如,./configure; make; make install)。這個想法是避免與作為作業系統一部分的文件發生衝突,否則這些文件將被覆蓋或覆蓋本地文件(例如,/usr/bin/foo是作業系統的一部分,/usr/local/bin/foo而是本地替代方案)。

下的所有文件/usr都可以在作業系統實例之間共享,儘管 Linux 很少這樣做。這是FHS有點自相矛盾的部分,/usr定義為只讀,但/usr/local/bin需要讀寫本地安裝軟體才能成功。SVR4 文件系統標準是 FHS 的主要靈感來源,建議避免/usr/local使用該標準/opt/local來克服這個問題。

/usr/local是原始 BSD 的遺產。當時/usr/bin作業系統命令的原始碼在/usr/src/binand/usr/src/usr.bin中,而本地開發的命令的原始碼在/usr/local/src,它們的二進製文件在/usr/local/bin. 沒有包裝的概念(在 tarball 之外)。

另一方面,/opt是一個用於安裝非捆綁包的目錄(即不屬於作業系統發行版的包,但由獨立的源提供),每個包都在其自己的子目錄中。它們已經建構了由獨立第三方軟體分銷商提供的完整軟體包。與其他/usr/local東西不同,這些包遵循目錄約定(或者至少它們應該)。例如,someapp將安裝在 中/opt/someapp,其命令之一是/opt/someapp/bin/foo,其配置文件將在 中/etc/opt/someapp/foo.conf,其日誌文件在/var/opt/someapp/logs/foo.access.

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