我最近一直在摸索文件系统层次结构标准,在很多场合,当谈到目录时/usr/local
,我遇到了术语“本地安装的包”。有人可以解释一下在这种情况下“本地”的确切含义吗?
答案1
/usr/local
根据或FHS 标准本地安装的软件包/opt
意味着默认发行版未安装的软件包,而是专门为该系统安装的软件包。
目录
/opt/bin
、/opt/doc
、/opt/include
、/opt/info
、/opt/lib
和 /opt/man 保留供本地系统管理员使用。软件包可以提供旨在由本地系统管理员放置(通过链接或复制)这些保留目录的“前端”文件,但必须在没有这些保留目录的情况下正常运行。用户调用的程序必须位于该目录
/opt/<package>/bin
或/opt/层次结构下。如果包包含 UNIX 手册页,则它们必须位于 /opt/ 层次结构中 或之下,并且必须使用/opt/<package>/share/man
相同的子结构。/usr/share/man
可变的包文件(正常操作中的更改)必须安装在
/var/opt
./var/opt
有关详细信息,请参阅 部分。特定于主机的配置文件必须安装在 /etc/opt 中。有关详细信息,请参阅 /etc 部分。
除了那些必须驻留在文件系统树中特定位置才能正常运行的包文件之外,在 、 和 /etc/opt 层次结构之外
/opt
不得存在其他包文件。/var/opt
例如,设备锁定文件必须放置在 中/var/lock
,设备必须位于 中/dev
。
有问题的软件包可以由系统管理员安装,也可以由其他用户授予适当的权限来安装。
通常,这些应用程序是在本地编译或作为脚本运行的,但也有部署它们的替代方法,例如将预编译的二进制文件或包分发到一组定义的服务器。如果系统管理员负责安装,他们可以按照发行版标准编译和打包应用程序,例如使用 Debian 的 .deb 包格式。此外,我还为此目的维护本地存储库。
答案2
对于不同的 Unice 来说,它意味着不同的东西。
联邦调查局没有提及与“包”相关的内容,/usr/local
而是将其描述为“特定于该主机的本地数据的三级层次结构”。
在大多数 Linux 上,本地管理员可以将本地编译的软件从正在使用的 Linux 发行版以外的源安装到
/usr/local
.该发行版的包管理器不会使用/usr/local
.apt
使用、apk
、等从包存储库安装的包yum
,不是被视为“特定于该主机”。BSD 系统有一个“基本系统”,由运行系统所需的实用程序和服务组成。因此,通过操作系统的包管理器安装的软件将安装在 (NetBSD)、(非 Intel macOS 上的 Homebrew)下
/usr/local
或/usr/pkg
其他/opt/homebrew
远离基本系统/usr
目录层次结构的位置(请参阅man hier
您的 BSD 系统)。BSD 系统认为本地安装的软件包括由本地管理员安装的第 3 方软件包,即使它们可能是使用系统的软件包管理器安装的。本地编译的软件(在 Linux 意义上)可能应该安装在其他地方,例如,在
/srv
或下/opt
,以免意外地与 中维护的软件发生冲突/usr/local
(随 BSD 风格而变化,见上文)。从包存储库安装的包是被视为“特定于该主机”。