/lib 和 /usr/lib 和 /var/lib 之间有什么区别?

Huz*_*uzi 24 directory-structure

/lib/usr/lib和有什么不一样/var/lib?有些文件是“复制”其他目录内容的符号链接。

jes*_*e_b 26

其他人可能可以用更多细节和历史参考来解释这一点,但简短的答案是:

/lib

是存放必要标准库的地方。考虑系统运行所需的库。如果某些内容在/bin/sbin需要一个库,则该库可能位于/lib.

/usr/lib

/usr顾名思义,该目录通常是一个基于用户的目录。在这里您可以找到系统上用户使用的东西。因此,如果您安装需要库的应用程序,它们可能会转到/usr/lib. 如果二进制文件位于/usr/bin/usr/sbin需要库,则它可能位于/usr/lib.

/var/lib

该目录是通常要求只读的目录的可写/var对应目录。/usr所以/var/lib会有类似的目的,/usr/lib但有能力写信给他们。

  • 值得注意的是:“听起来*是一个基于用户的目录” - `usr` 听起来像“用户”,但它实际上代表 Unix 系统资源 (15认同)
  • @ArtemS.Tashkinov 抱歉,您的评论中有很多不准确之处。“15 年”已经过去了,Fedora [在 2012 年](https://fedoraproject.org/wiki/Features/UsrMove) 迁移到 /usr,而且它肯定不是最后一个这样做的主要发行版(如果不是的话)首先)。`/var/lib` 绝对不适合瞬态数据,至少在大多数发行版上不适合。删除它会对典型的系统产生灾难性的后果(破坏 yumdb/rpmdb 并破坏包管理器而无法修复它,破坏各种 SQL 数据库或具有宝贵数据的虚拟机的默认存储位置等) (14认同)
  • @kubi 这对我来说有民间词源学或方便回缩的味道;它甚至没有很好地描述其作用。维基百科引用了[丹尼斯·里奇的这些注释](https://www.bell-labs.com/usr/dmr/www/notes.html),将起源描述为“一个目录‘/usr’,其中包含所有用户的目录,并且它存储在一个相对较大但移动缓慢的磁头磁盘上”。 (14认同)
  • 只是为了改进一点 - 这一切都来自文件系统层次结构标准。这个定义现在有点过时了,但仍然提供了有趣的见解。https://www.pathname.com/fhs/pub/fhs-2.3.html (10认同)
  • 这个答案至少晚了 15 年,是的,“历史上”它是正确的,但 Linux 发行版已经很多年没有 /bin /sbin 和 /lib 了,并且所有三个都链接到适当的 /usr 目录。而“/var/lib”通常保存的是暂时的数据,你也可以完全删除,系统不会受到影响。最后,这可能是第 150 次问这个问题了。不知道为什么人们一次又一次跳起来回答这个问题。 (2认同)

use*_*489 13

/lib和中的文件/usr/lib大部分是只读的并且在系统之间是相同的。(如果是容器映像,它们可以完全只读并在系统之间共享;在独立系统上,它们需要可写才能安装更新。)

中的文件/var特定于本地系统,并且通常包含由系统操作生成的数据。

通常,配置文件模板的分发版本可以在 中找到/usr/lib,并可用于在 中/etc或可能创建配置文件的本地化版本/var

我不确定为什么/lib和之间会有重复的文件/usr/lib,更可能的是它们是符号链接而不是重复的。(我当前的系统上没有这样的文件,只有一个符号链接。)

从历史上看,像这样的目录/usr/lib /usr/bin实际上是创建的,因为/usr它们位于单独的磁盘上,并且东西被放在那里,因为/bin它们/lib位于根磁盘上,而根磁盘太小而无法容纳所有内容,而留在根磁盘上的东西对于引导足够远以安装至关重要/usr。当然,这个概念已经过时了,并且有一个将它们合并的运动。