4 votos

La versión GNU de locate - gupdatedb falla con "gfind: failed to read file names from file system"

Intento probar la versión GNU de locate comando. En primer lugar, tengo que crear la base de datos así :

sudo gupdatedb --prunepaths=/Volumes --output=$HOME/locatedb_gupdatedb

Lamentablemente, 1 minuto después de lanzar el comando, sigo obteniendo el siguiente error :

gfind: failed to read file names from file system at or below '/': No such file or directory

¿No entiendo de dónde puede venir este error?

ACTUALIZACIÓN 1: He sustituido gfind por find y el camino correcto de find que es /usr/bin/ . Desgraciadamente, me salen mensajes de error tan embarazosos como este cuando lanzo el gupdatedb comando como este :

sudo gupdatedb --prunepaths='/private/tmp /private/var/folders /private/var/tmp */Backups.backupdb /Volumes /System' --output=$HOME/locatedb_gupdatedb

Aquí los mensajes de error :

find: /System/Volumes/Data/.Spotlight-V100: No such file or directory
find: /System/Volumes/Data/.PKInstallSandboxManager: No such file or directory
find: /System/Volumes/Data/.PKInstallSandboxManager-SystemSoftware: No such file or directory
find: /System/Volumes/Data/.cleverfiles: No such file or directory
find: /System/Volumes/Data/mnt: No such file or directory
find: /System/Volumes/Data/.DocumentRevisions-V100: No such file or directory
etc ...

Intenté modificar en /usr/local/Cellar/findutils/4.7.0/libexec/bin/gupdatedb la opción :

: ${FINDOPTIONS="2 > /dev/null"}

Pero el problema es que esta opción se pone delante del comando find no al final, por lo que no es correcto en lo que sigue del archivo.

Dado el hecho de que hay una gran cantidad de find comandos después en el script, no puedo añadir manualmente cada vez que el 2 > /dev/null opción de terminal.

Cualquiera podría ver cómo suprimir todos estos mensajes de error de find al lanzar un gupdatedb ¿comando?

ACTUALIZACIÓN 2: Finalmente logré crear una base de datos con gupdatedb (versión GNU de MacOS updatedb ) haciendo :

sudo gupdatedb --prunepaths='/private/tmp /private/var/folders /private/var/tmp */Backups.backupdb /System /Volumes' --output=$HOME/locatedb_gupdatedb

El problema ahora es que, cuando hago una búsqueda en una subcadena de un archivo o directorio, la información parece estar duplicada en los resultados ( sub_string es simplemente la parte del nombre de un archivo o directorio) :

Por ejemplo, si hago un : glocate -d ~/locatedb_gupdatedb sub_string

Entonces, tengo resultados duplicados como :

/System/Volumes/Data/Users/fab/sub_string.dat
/Users/fab/sub_string.dat

No sé cómo excluir ' /System/Volumes/Data/ ' de estos resultados : sin embargo, he especificado bien en --prunepaths opción el directorio System por qué no se tiene en cuenta en la base de datos creada por gupdatedb ?

O tal vez debería realizar un :

sudo gupdatedb --prunepaths='/private/tmp /private/var/folders /private/var/tmp */Backups.backupdb /System/Volumes/Data /Volumes' --output=$HOME/locatedb_gupdatedb

??

Cualquier ayuda es bienvenida para excluir este directorio

/System/Volumes/Data

de la base de datos de indexación.

ACTUALIZACIÓN 3: Este es un ejemplo de generar rápidamente una base de datos con updatedb on Debian 10 Buster . Pocas modificaciones del uso normal se han hecho entre las marcas de tiempo de los 2 comandos updatedb .

enter image description here

Así que concluyo que realmente hay una diferencia entre la implementación de GNU/MacOS y GNU/Linux.

Cualquier explicación es bienvenida.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X