/usr/sbin、/usr/local/sbin 和 /usr/local/bin 的意思是什麼?

/usr/sbin、/usr/local/sbin 和 /usr/local/bin 的意思是什麼?

讓我們弄清楚所有 bin 和 sbin 資料夾(來自檔案系統層次結構標準):

  • /bin用於系統級二進位文件
  • /sbin用於其他系統級二進位文件,主要用於引導程式和系統管理員
  • /usr/bin適用於非必要的二進位文件
  • /usr/sbin- 這就是混亂開始的地方 - 不是系統管理員的必備工具?這是什麼意思?用於實驗?
  • /usr/local/bin- 沒有關於此資料夾的任何訊息
  • /usr/local/sbin- 本機安裝的系統管理程式。再一次?怎麼樣/usr/sbin

那麼問題來了:為什麼有這麼多目錄, 、、是什麼意思/usr/sbin/usr/local/sbin/usr/local/bin

許多程式是透過檔案分發的,我們必須從原始碼建立它們。通常他們有 makefile,所以這很容易。此過程涉及在 usr/local/lib、usr/local/bin...usr/local/whatever 中建立文件,而不是為給定程式建立特定資料夾。

為什麼會這樣呢?

我認為這是不對的,因為如果我們需要刪除該程序,如果該程序的創建者沒有處理的話,我們必須手動刪除它的每個文件。

答案1

1.目錄結構

這應該包含在檔案系統層次結構標準2.3 PDF

/bin/ 需要在單一使用者模式下可用的基本命令二進位;
            對於所有用戶,例如 cat、ls、cp

/sbin/ 基本系統二進位文件,例如 init、ip、mount。

/usr/bin/ 非必要的命令二進位(單用戶模式下不需要);
            對於所有用戶

/usr/sbin/ 非必需的系統二進位文件,例如各種網路服務的守護程式。

/usr/local/ 本機資料的第三層級結構,特定於該主機。
            通常還有更多子目錄,例如 bin/、lib/、share/

2. 安裝

我盡可能使用套件管理器(例如 yum 或 apt-get)。對於大量應用程式來說這是可能的,在少數情況下您可能必須添加儲存庫。我的第二個選擇是較低階的軟體包,例如 RPM,從原始碼編譯將是我最後的選擇(但有些人更喜歡這個)

一些套件管理器可以從 RPM 安裝(例如yum install oddity.rpm

如果您從原始程式碼進行編譯,那麼創建自己的軟體包以便系統安裝程式知道您做了什麼可能並不是一個巨大的步驟。

那麼你的問題就簡化為例如yum remove packagename

另一種方法是保存有關所有系統管理活動的良好文件(無論如何,我將日誌保存在文字檔案中)

答案2

所有 */sbin 目錄中的內容往往只對系統管理員有用。如果您是普通用戶,可以將它們排除在 PATH 之外。

如果您在單一磁碟上有一台 UNIX 機器,那麼不同的目錄沒有多大意義,但如果您有一個大系統和不同的分割區,則更有意義。請記住,這些習慣中有很多是在 80 年代和 90 年代養成的,當時的系統有點不同。

/sbin傾向於非常小的。這些是當您真正感到疲憊時所需要的實用程式。您可以將其放在帶有 /root 和 /lib 的最小根分割區上。 /sbin 中的東西過去都是靜態連結的,因為如果你的 /usr 分割區被軟管覆蓋,任何動態連結的應用程式都是無用的。 fsck 在這裡並且靜態連結。如果您對 /usr 有依賴,顯然您無法 fsck /usr/。當然,如果根分區被軟管覆蓋,那你就完蛋了。這就是為什麼這是一個如此小的分割區 - 通過在這裡使用很少的區塊來降低壞磁碟區塊的幾率。

/usr/sbin二進位檔案是通用的系統管理工具,您至少可以進入單一使用者模式並安裝所有磁碟區。它們允許動態連結。

當您記得備份在時間和磁帶方面都非常昂貴時,/sbin(好吧,/ 分區上的 /sbin)和 /usr 的單獨分區也更有意義。如果它們位於不同的分區上,您可以以不同的方式安排它們。

/usr/local可以是網路檔案系統。因此,可以在多台電腦之間共用的本機編寫的系統管理工具有時會進入 /usr/local/sbin 。顯然沒有網路修復實用程式可以到達那裡。

同樣,許多事情在具有多個磁碟區的託管電腦上的網路環境中的大型電腦上更有意義,而在單一根分割區上的一台 Linux 電腦上則更有意義。

答案3

您確實應該將第二個問題作為超級用戶的單獨問題。與第一點無關。

是的,文件到處都是很糟糕。這就是為什麼有許多包裝解決方案的原因。 RedHat 創建了到處都在使用的 RPM。 Solaris 有自己的套件格式。 HP/UX 有他們的套件格式,還有 apt 和許多其他套件格式。根據需要將內容放在正確的位置(/usr/bin、/usr/lib),但允許輕鬆新增和刪除。

對於原始程式碼,曾經有一些工具可以讓您在 /usr/local 的子目錄中配置和安裝,並且它可以為您處理到 /usr/local/bin 的符號連結。由於軟體包工具的廣泛普及,這不再是必要的,而且我忘記了它們的名字。

有些人喜歡安裝在/opt/包裹名字並將所有東西都放在一起。好處是:所有內容都在一個目錄中,並且卸載是rm -rf /opt/packagename.這樣做的缺點是必須將 /opt/packagename/bin 添加到每個人的 PATH 中,而且人們通常不會將 /opt 放在單獨的分區上,並且您會填滿根分區。

答案4

回答你的第二個問題:
通常程序是用所謂的套件管理器。套件管理器通常會取得二進位套件(為特定平台編譯的軟體)並將其丟到目錄中(有些人下載原始程式碼,在您的電腦上編譯並安裝它)。因此,套件管理器知道屬於某個「程式」(套件)的檔案所在的位置,並且當您想要刪除該套件時,套件管理器會負責清理所有內容。
即使您自己編譯原始碼

make

並安裝它

make install

你通常可以做

make uninstall

這將從檔案系統中刪除檔案。

相關內容