updatedb
ターミナルから実行すると、次のエラーが発生します。
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
仕事に行く方法について何かアイデアはありますかupdatedb
?
答え1
これは古い投稿だとは思いますが、この解決策は他には見つかりません。
問題はmlocate.db
、ご想像のとおり、ファイルではありません。実行ファイルの権限ですmlocate
。次の方法で問題は解決します。
sudo chmod 2755 /usr/bin/mlocate
これが問題の原因です:
$ ls -lathr /usr/bin/mlocate -rwx処方箋rx 1 root mlocate 39K 2014年11月17日 /usr/bin/mlocate
なしでコマンドsetuid
を実行できるようにするには、グループに少し手を加える必要があります。修正されると、出力は次のようになります。locate
sudo
ls
$ ls -lathr /usr/bin/mlocate -rwxrsrx 1 root mlocate 39K 2014年11月17日 /usr/bin/mlocate
chmod
他の人が推奨しているように、ファイル自体に対してを実行するだけでdb
は、次に誰かが を実行するまでしか機能しませんupdatedb
。その後、権限がリセットされます。
答え2
私の場合、Ubuntu 14にアップデートした後も、
$ locate chruby
locate: can not open `/var/lib/mlocate/mlocate.db': Permission denied
したがって、他の回答とは異なり、問題はそのファイルの読み取り権限を拡大することではありませんでした。
私の "非ルートユーザー" はマスター。 ように根そのユーザーをグループに追加しました位置する:
# 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
答え3
次のコマンドを実行して下さいsudo
:
sudo updatedb
答え4
書き込み権限があるディレクトリ内の他の場所に の出力をman updatedb
書き込む方法を読んで学習します。updatedb