updatedb: impossible d'ouvrir un fichier temporaire pour `/var/lib/mlocate/mlocate.db '

15

Je vais utiliser la commande updatedb pour mettre à jour l'index et j'obtiens

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

fyi La commande de localisation fonctionne, par exemple

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

Comment puis-je surmonter ce problème lorsque j'essaie d'exécuter updatedb?

Michael Durrant
la source

Réponses:

26

Vous devez exécuter la commande updatedb en tant que super utilisateur. Par exemple,

sudo updatedb
Manula Waidyanatha
la source
Une fois créée, la base de données peut-elle être mise à jour par un utilisateur régulier ( par exemple de crontab) sans privilèges de super-utilisateur?
holdenweb
1
La base de données de mise à jour crée le fichier cache dans / var / cache / Locate / locatedb, qui n'est accessible en écriture que par root. L'utilisateur normal ne peut donc pas exécuter la commande. Mais il est possible de créer un fichier dans un emplacement différent qui est accessible en écriture par un utilisateur régulier. (Mais le problème est que les utilisateurs réguliers ne peuvent pas lire tout le système de fichiers)
Manula Waidyanatha
1

Si vous manquez de temps et souhaitez localiser un fichier, vous n'en avez pas besoin sudo updatedbpour mettre à jour le cache. Au lieu de cela, vous pouvez utiliser locate -e filenamepour ignorer le cache.

Shuhua Fan
la source