Quando executo updatedb
a partir de um terminal, recebo este erro:
updatedb: can not open a temporary file for `/var/lib/mlocate/mlocate.db'
Alguma ideia de como chegar updatedb
ao trabalho?
Responder1
Sei que este é um post antigo, mas não vejo essa solução em outro lugar.
O problema não é o mlocate.db
arquivo, como seria de esperar. São as permissões no mlocate
executável. Isso resolverá o problema:
sudo chmod 2755 /usr/bin/mlocate
Esta é a fonte do problema:
$ ls -lathr /usr/bin/mlocate -rwxRXrx 1 root mlocate 39K 17 de novembro de 2014 /usr/bin/mlocate
Você precisa de um setuid
pouco no grupo para permitir a execução do locate
comando sem sudo
. Depois de corrigido, sua ls
saída deverá ficar assim:
$ ls -lathr /usr/bin/mlocate -rwxrsrx 1 root mlocate 39K 17 de novembro de 2014 /usr/bin/mlocate
Simplesmente fazer um chmod
como alguns outros recomendam no db
próprio arquivo só funcionará até a próxima vez que alguém executar updatedb
. Então as permissões serão redefinidas.
Responder2
Para mim, depois das atualizações do Ubuntu 14, ainda recebi
$ locate chruby
locate: can not open `/var/lib/mlocate/mlocate.db': Permission denied
portanto, o problema não era ampliar as permissões de leitura nesse arquivo, ao contrário de outras respostas.
Meu "usuário não root" émestre. Assim comoraizEu adicionei esse usuário ao grupolocalizar:
# addgroup master mlocate
Depois de listar os detalhes desse diretório para ver as propriedades:
# 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
Responder3
Por favor, execute o comando com sudo
:
sudo updatedb
Responder4
Leia man updatedb
e aprenda como escrever updatedb
a saída de em outro lugar, em um diretório para o qual você tenha permissão de gravação.