locate 和 mlocate 的区别

P A*_*A N 29 locate

我想安装该命令locate,该命令可通过sudo apt-get installmlocate.

但是,我首先运行sudo apt-get installlocate它似乎安装了其他东西。

locate <package>但是,键入命令似乎会调用mlocate.

什么是包locate,可以(应该)安全地删除它吗?

Gil*_*il' 39

定位包是实施定位GNU的findutils。该的mlocate包名为同一概念的另一种实现方式的mlocate。它们实现了相同的基本功能:基于每晚(通常)重建的索引快速查找文件名。除了基本用法之外,它们的某些功能有所不同。特别是,GNU locate 仅构建世界可读文件的索引(除非您从您的帐户运行它),而 mlocate 构建所有文件的索引,但只允许调用用户查看它可以访问的文件。这使得 mlocate 在大多数情况下更有用,但在某些不由系统管理员运行的不寻常安装中无法使用(因为mlocate必须是setuid root),并且存在安全风险。

在 Debian 和衍生品下,如果你同时安装两者,locate就会运行mlocate实现,而你需要运行locate.findutils才能运行 GNU 实现。这是通过替代方案进行管理的。如果两者都安装了,它们都会花时间重建各自的索引,但除此之外它们不会相互冲突。

  • 你忽略了 `mlocate` 的主要特性,它的名字来源于它(“合并定位”):它提供了一个 `updatedb` 版本,它重用它的旧索引来通过只查询文件/子目录列表来提高更新性能对于 `ctime` 已更改的目录。 (6认同)

Ant*_*hon 7

mlocate 是一种较新的 locate 实现。一旦你安装mlocate

将通过替代机制将 /usr/bin/locate 二进制文件更改为指向 mlocate。

这就是为什么如果按该顺序安装会出现 mlocate 行为的原因。

详细信息可以在这里找到

  • 事实上,我从未安装过`mlocate`,但是在我的Ubuntu 16.04系统上,`/usr/bin/locate -&gt; /etc/alternatives/locate -&gt; /usr/bin/mlocate` (2认同)