При запуске 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 17 ноября 2014 г. /usr/bin/mlocate
Вам нужен setuid
бит в группе, чтобы позволить вам запустить locate
команду без sudo
. После исправления ваш ls
вывод должен выглядеть следующим образом:
$ ls -lathr /usr/bin/mlocate -rwxрсrx 1 root mlocate 39K 17 ноября 2014 г. /usr/bin/mlocate
Простое выполнение a, chmod
как рекомендуют некоторые другие, против db
самого файла будет работать только до следующего запуска кем-либо updatedb
. Затем разрешения будут сброшены.
решение2
У меня после обновления до Ubuntu 14 все еще продолжало появляться
$ locate chruby
locate: can not open `/var/lib/mlocate/mlocate.db': Permission denied
так что проблема была не в расширении прав на чтение этого файла, как говорится в других ответах.
Мой "не 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
решение3
Пожалуйста, выполните команду sudo
:
sudo updatedb
решение4
Прочитайте man updatedb
и узнайте, как записать updatedb
вывод в другое место, в каталог, на запись в который у вас есть разрешение.