updatedb: не могу открыть временный файл для `/var/lib/mlocate/mlocate.db '

15

Я использую команду updatedb для обновления индекса и получаю

updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'

FYI команда locate работает, например,

$ locate Index.xml
/usr/share/mysql/charsets/Index.xml
durrantm.../durrantm$ 

Как я могу преодолеть эту проблему при попытке запустить updatedb?

Майкл Даррант
источник

Ответы:

26

Вы должны запустить команду updatedb как суперпользователь. Например,

sudo updatedb
Манула Вайдьянатха
источник
Может ли созданная база данных быть обновлена ​​обычным пользователем ( например, от crontab) без прав суперпользователя?
holdenweb
1
Обновление базы данных создает файл кэша в / var / cache / locate / locationb, который доступен для записи только пользователю root. Поэтому обычный пользователь не может запустить команду. Но возможно создать файл в другом месте, доступный для записи обычному пользователю. (Но проблема в том, что обычные пользователи не могут прочитать всю файловую систему)
Manula Waidyanatha
1

Если вам не хватает времени и вы хотите найти файл, вам не нужно sudo updatedbобновлять кеш. Вместо этого вы можете использовать, locate -e filenameчтобы пропустить кэш.

Шухуа Фан
источник