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
この万座でスレッドポジショニングの使用方法は?著者はplocate
次のようにコメントします。
まず、データベースが最近更新されたことを確認してください。ほとんどのユーザーは、plocateのupdatebを使用したいと思います。 plocate 1.1.0以降、plocate-build(mlocateのデータベースから変換)は通常望ましくありません。 [...]
ファイルが表示されないもう1つの理由は、通常、権限によるものです。ルートとしてファイルが見つかることを確認してください(sudo plocate test)。可能であれば、ルートからディレクトリにアクセスできないことが問題である可能性が高いです。 plocateは/ -nameが見つかったすべてのものを見つける必要があります。テスト本当ですが、それ以上ではありません。
私は逃げた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
実行してみると結果が異なります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
useと同じことができるようにしたいです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
答え1
TL:DR:以下を使用する場合btrfs
:
- 編集する
/etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
使用。 。 。交換PRUNE_BIND_MOUNTS = "no"
- 文書を保存
- データベースの更新
sudo updatedb
locate home
ディレクトリの出力を表示するには、もう一度テストしてくださいhome
。
説明する
plocate
著者に連絡したところ、親切にも正しい方向を教えてくれて、次のような回答をしてくれました。
これらの問題の90%がbtrfs設定エラーのようです。どのファイルシステムで実行しているかはわかりませんが、そうである場合は、PRUNE_BIND_MOUNTSの下のUpdateb.confのマニュアルページを参照してfstabを確認してください。
私は実際にbtrfs
(確認するためにlsblk -f
:)を使用しています。
相談内容はman updatedb.conf
以下の通りです。
PRUNE_BIND_MOUNTS
文字列 0、no、1、または yes のいずれかです。 PRUNE_BIND_MOUNTSが1またはyesの場合、updateb(8)はバインドマウントを検索しません。バインドマウントサブツリーにマウントされているすべてのファイルシステムは、バインドマウントされていない場合でもスキップされます。例外として、ディレクトリ自体のバインドマウントはスキップされません。 Btrfsサブボリュームのマウントはカーネル内でバインドマウントとして扱われます(btrfs-subvolume(8)を参照)、ファイルシステムのルート自体もマウントしている場合はスキップできます。この問題を解決するには、ルートディレクトリもBtrfsサブボリュームにします。
デフォルトでは、バンドルマウントはスキップされません。
回避策については、上記のTL; DRを参照してください。