关于 /usr 和 /usr/local 的讨论

应该把程序安装在 /usr还是/usr/local?

对于一个以LFS为基础的系统来说,这是一个没有明确答案的问题。

在传统的unix系统中,/usr通常只包含系统发行时自带的程序,而/usr/local则是本地系统管理员用来自由添加程序的目录。这里有一条严厉而牢固的规则:除非在里面创建目录,unix发行版不得使用/usr/local 。

对于Linux发行版,如 RedHat, Debian 等等,一个可能的规定是:/usr目录只能由发行版的软件包管理工具负责管理,而对/usr/local却没有这样做。正是因为采用这种方式,软件包管理工具的数据库才能知道在/usr目录内的每一个文件。

LFS的用户是自己建立系统的,所以能自己决定系统文件和用户文件的放置方式。因此,应该按照有利于系统管理员使用的方式作出选择。这里有几个把文件安装到/usr或者是/usr/local的理由:

  • 如果网络上的计算机都运行LFS或者是混合使用LFS和其它linux发行版,所有连网计算机共用的软件应该安装在/usr/local内。这样可以通过NFS文件系统共享该目录或者从一个服务器上镜象过来。此时local表示本地服务器提供软件。

  • 如果网络上的计算机都运行同样的LFS系统,/usr/local应该安装各台计算机之间不相同的软件。这时local表示本地计算机提供软件。

  • 如果你在一台计算机上同时安装了几个linux发行版,并希望在某个目录存放它们共享的软件,这时/usr/local目录就能发挥作用了。

  • 或者你想要经常重建LFS系统,但又希望把不想每次重复编译的软件存放在某处,你也可以把软件安装在/usr/local目录。这样你就可以在不丢失数据的情况下删去LFS系统并从一个干净的分区重新开始。

一些人会问为什么不使用你自己的目录树,也就是使用/usr/site 而不是/usr/local?

没有什么能阻止你,确实可以在很多地方创建自己的目录树,但这使安装新软件更加麻烦。自动化的安装程序通常要到/usr或/usr/local目录下寻找所依赖的文件,如果要找的文件不在/usr目录里面,除非你指定目录让安装程序查找所依赖的文件,安装可能会失败。

那么在BLFS中软件的安装位置在那里?

除非特别声明,所有BLFS中的软件都安装在/usr目录下。也有一些文件被放在/usr/local目录下,但它们只是文档并且有足够的理由这样做。这些例外的情况都会在本书中得到很好的说明,如果发现有不对的地方,请告诉我们!


你可能感兴趣的:(关于 /usr 和 /usr/local 的讨论)