我该把 XXX 安装在 /usr 还是 /usr/local?
对于基于 LFS 的系统,这个问题没有显而易见的答案。
在传统的 Unix 系统中,/usr 通常包含随系统发行版提供的文件,而
/usr/local
目录树则供本地管理员自由管理。唯一真正硬性的规则是,Unix 发行版不应触碰 /usr/local,除了可能在其中创建基本目录之外。
对于 Red Hat、Debian 等 Linux 发行版,一条可能的规则是:/usr 由发行版的软件包系统管理,而 /usr/local 则不由其管理。这样,软件包管理器的数据库就能了解 /usr 中的每一个文件。
LFS 用户构建自己的系统,因此决定系统止于何处、本地文件始于何处并非易事。所以,应该以便于管理为原则进行选择。将文件分割到
/usr 和 /usr/local 之间有若干理由。
在由多台全部运行 LFS 或混合 LFS 与其他 Linux 发行版的机器组成的网络中,/usr/local 可用于存放网络中所有计算机共用的软件包。它可以挂载为
NFS,或者从单个服务器镜像过来。这里的“local”指站点本地。
在由多台运行相同 LFS 系统的计算机组成的网络中,/usr/local
可用于存放各机器之间不同的软件包。在这种情况下,“local”指单台计算机。
即使在单台计算机上,如果同时安装了多个发行版,并希望有一个地方存放对所有发行版都相同的软件包,/usr/local 也会很有用。
或者,您可能定期重建 LFS,但希望有一个地方存放不必每次都重建的文件。这样,您可以清除 LFS 文件系统,每次都从一个干净的分区重新开始,而不会丢失所有内容。
有人会问,为什么不用自己的目录树,例如 /usr/site,而要用
/usr/local?
这并不禁止您这样做,许多站点确实会创建自己的目录树,但这会增加安装新软件的难度。自动安装程序通常会在 /usr 和 /usr/local
中查找依赖项,如果要找的文件位于 /usr/site
中,安装程序很可能会失败,除非您专门告诉它去哪里查找。
BLFS 对此持什么立场?
所有 BLFS 说明都将程序安装在 /usr
中,并针对某些特定软件包提供安装到 /opt 的可选说明。