locate和mlocate之间的区别


15

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

但是,我首先运行sudo apt-get installlocate了似乎已安装了其他设备的设备。

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

包装是什么locate,可以(应该)安全地取出吗?


1
我相信mlocate可以替代原始的locate,但是那是在15年前,并且可能一个包是另一个的别名或引用。还有另一个变体“ slocate”,它根据用户权限观察文件的可见性,但是我没有看到。长期以来
Otheus

Answers:


25

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

在Debian和衍生产品下,如果同时安装,locate将运行该mlocate实现,并且需要运行locate.findutils以运行GNU实现。这通过替代方法进行管理。如果您都安装了它们,则它们都会花费时间重建各自的索引,但是除此之外,它们不会互相冲突。


2
您忽略了提及mlocate的主要功能,从中获得了它的名称(“合并定位”):它提供了一个版本,updatedb该版本可以重用其旧索引,从而仅通过查询ctime已更改目录的文件/子目录列表来提高更新性能。。
ssokolow

6

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

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

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

可以在这里找到详细信息


实际上,我从未安装过mlocate,而是在我的Ubuntu 16.04系统上安装/usr/bin/locate -> /etc/alternatives/locate -> /usr/bin/mlocate
cayhorstmann
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.