ターミナルからupdatedb
を実行すると、次のエラーが表示されます。
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
updatedb
を機能させる方法についてのアイデアはありますか?
これは古い投稿であることに気づきましたが、このソリューションは他の場所にはありません。
予想どおり、問題はmlocate.db
ファイルではありません。 mlocate
実行可能ファイルに対する権限です。これにより問題が修正されます。
Sudo chmod 2755 /usr/bin/mlocate
これが問題の原因です。
$ ls -lathr/usr/bin/mlocate -rwx処方箋r-x 1ルートmlocate 39K 2014年11月17日/ usr/bin/mlocate
setuid
なしでlocate
コマンドを実行できるようにするには、グループにSudo
ビットが必要です。修正されると、ls
出力は次のようになります。
$ ls -lathr/usr/bin/mlocate -rwxr-sr-x 1ルートmlocate 39K 2014年11月17日/ usr/bin/mlocate
他の人がchmod
ファイル自体に対して推奨するdb
を実行することは、次に誰かがupdatedb
を実行するまでしか機能しません。その後、権限がリセットされます。
Ubuntu 14へのアップデート後、私はまだ取得し続けました
$ locate chruby
locate: can not open `/var/lib/mlocate/mlocate.db': Permission denied
そのため、他の回答とは異なり、問題はそのファイルの読み取り権限を広げることではありませんでした。
私の "nonrootuser"はmasterです。 rootというように、そのユーザーをグループに追加しましたmlocate:
# addgroup master mlocate
そのディレクトリの詳細を一覧表示して所有権を確認した後:
# ls -al /var/lib/mlocate
drwxr-xr-x 2 root root 4096 Jun 19 13:21 ./
drwxr-xr-x 94 root root 4096 Jan 23 11:27 ../
-rw-r----- 1 root mlocate 50134121 Jun 19 13:21 mlocate.db
Sudo
を指定してコマンドを実行してください:
Sudo updatedb