/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

你确实应该将第二个问题作为 Superuser 上的一个单独问题。它与第一个问题无关。

是的,文件到处乱放很麻烦。这就是为什么会有很多打包解决方案。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

从文件系统中删除文件。

相关内容