目前我正在尝试从迁移mlocate
到plocate
.
我mlocate
在我的脚本中使用(注意:locate
别名为任一mlocate
或plocate
取决于我安装的哪个)。
成功搜索主目录mlocate
下面是运行后的前 10 个输出locate home
(locate 别名为mlocate
):
/home
/etc/apparmor.d/tunables/home
/etc/apparmor.d/tunables/home.d
/etc/apparmor.d/tunables/home.d/site.local
/etc/systemd/homed.conf
/home/username
/home/username/.bash_history
/home/username/.bash_profile
/home/username/.bashrc
/home/username/.cache
/home/username/.cargo
如您所见,我可以使用mlocate
.
未成功搜索主目录plocate
:
但是,安装后plocate
,我从 等获得结果/etc/
,/usr/
而我得到的只是一个/home
:
运行后locate home
(locate
别名为plocate
):
/home
/etc/apparmor.d/tunables/home
/etc/apparmor.d/tunables/home.d
/etc/apparmor.d/tunables/home.d/site.local
/etc/systemd/homed.conf
/usr/bin/addgnupghome
/usr/bin/homectl
如您所见,plocate
在我的主目录中找不到文件和目录。
我试过的
1.作者的评论plocate
这个 manjaro 线程如何使用 plocate?作者评论plocate
如下:
首先,检查数据库最近是否更新过。大多数用户会希望使用 plocate 的 updatedb;自 plocate 1.1.0 以来,plocate-build(从 mlocate 的数据库转换而来)通常不是您想要的。[...]
文件未显示的另一个原因通常是权限。检查您是否可以以 root 身份找到文件(sudo plocate test);如果可以,问题很可能是您没有从根目录一直向下访问该目录的权限。plocate 应该找到 find / -name test所做的任何事情,但仅此而已。
我跑sudo updatedb
了
我的主目录访问权限:
/
➜ ll
drwxr-xr-x - root 17 Jul 2022 home/
drwxr-xr-x - root 16 Apr 21:44 usr/
/home
➜ ll
drwxr-xr-x - username 16 Apr 21:51 username/
看起来确实plocate
无法访问我的主目录下的文件和目录,但它具有与usr
. 我不明白为什么plocate
可以看到usr
但看不到文件和目录home
。
2.运行时结果不同sudo
plocate
当我运行as时,结果是不同的sudo
。
以下是常规的locate
:
➜ locate ranger
/usr/bin/ranger
/usr/lib/python3.10/site-packages/ranger
/usr/lib/python3.10/site-packages/ranger_fm-1.9.3-py3.10.egg-info
/usr/lib/python3.10/site-packages/ranger/__init__.py
/usr/lib/python3.10/site-packages/ranger/__pycache__
下面运行为sudo
:
➜ sudo locate ranger
/root/.config/ranger
/root/.local/share/ranger
/root/.local/share/ranger/bookmarks
/root/.local/share/ranger/history
/root/.local/share/ranger/tagged
/usr/bin/ranger
/usr/lib/python3.10/site-packages/ranger
/usr/lib/python3.10/site-packages/ranger_fm-1.9.3-py3.10.egg-info
我可以在我的主目录中看到结果(即前 5 个结果)。
我想要的是
我希望能够plocate
像使用mlocate
. 换句话说,我希望在使用时来自主目录的结果plocate
:
$ locate home
/home
/etc/apparmor.d/tunables/home
/etc/apparmor.d/tunables/home.d
/etc/apparmor.d/tunables/home.d/site.local
/etc/systemd/homed.conf
/home/username
/home/username/.bash_history
/home/username/.bash_profile
/home/username/.bashrc
/home/username/.cache
/home/username/.cargo
TL:DR:如果您使用的是
btrfs
,请执行以下操作:/etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
为PRUNE_BIND_MOUNTS = "no"
sudo updatedb
locate home
查看home
目录中的任何输出。解释
我联系了
plocate
作者,他亲切地把我送到了正确的方向,并回复如下:我确实在使用
btrfs
(检查:)lsblk -f
。咨询
man updatedb.conf
给出以下内容:有关解决方案,请参阅上面的 TL;DR。