Оказывается, можно сделать так, чтобы locate.updatedb индексировал другие файловые системы, в том числе подключенные к сети.
Подвох заключается в том, что корень файловой системы (и дерево вплоть до контента, который вы хотите проиндексировать) должен быть доступен для чтения пользователю / группе "nobody".
Вы были на правильном пути с /etc/locate.rc
После этого я обнаружил, что /usr/libexec/locate.updatedb просто использует find для построения индекса.
Он просматривает записи в /etc/locate.rc FILESYSTEMS (по крайней мере, в 10.6 по умолчанию это просто hfs, если не установлено).
Страница man find предлагает использовать "sysctl vfs", чтобы узнать, что действительно на вашей машине. В моем случае:
sysctl vfs|grep mounted vfs.nfs has 1 mounted instance vfs.hfs has 3 mounted instances vfs.autofs has 3 mounted instances vfs.afpfs has 4 mounted instances
Некоторое быстрое тестирование, чтобы проверить это:
prowler:~%% mount |grep Volumes/keen afp_1I6KyU4igzg00Q0vsj4E2G0H-1.2f0004fb on /Volumes/keen (afpfs, nodev, nosuid, mounted by keen) prowler:~%% touch /Volumes/keen/test-afpfs prowler:~%% find /Volumes/keen/ -name test-afpfs -fstype afpfs prowler:~%% find /Volumes/keen/test-afpfs -name test-afpfs -fstype afpfs /Volumes/keen/test-afpfs prowler:~%% find /Volumes/keen/test-afpfs -name test-afpfs -fstype hfs prowler:~%%
По крайней мере, для 10.6 afpfs является правильным для файловой системы, смонтированной AFP.
Теперь к провалу для afpfs.
Когда OSX (10.6) монтирует том AFP (монтируется через элемент входа в систему или Finder -> Go -> connect to server - традиционные механизмы OSX для AFP), он монтирует его как читаемый только пользователем:
prowler:/Volumes/keen%% ls -ld /Volumes/keen drwx------ 6 keen keen 264 Dec 13 12:45 /Volumes/keen/
и попытка исправить это вручную:
prowler:/Volumes/keen%% sudo chmod a+rx /Volumes/keen prowler:/Volumes/keen%% ls -ld /Volumes/keen drwx------ 6 keen keen 264 Dec 13 12:52 /Volumes/keen/
Я еще не нашел обходного пути (я не пробовал autofs, так как этот метод имеет тенденцию ломаться в каждой версии OSX ...).
Тома hfs (и предположительно hfs + и т. д.), которые монтируются, не имеют этой проблемы, также как и тома NFS, смонтированные с помощью Дисковой утилиты -> Монтирование NFS (10.6).
prowler:~%% mount |grep nfs murf:/backups on /Users/keen/backups (nfs, nodev, nosuid, automounted, nobrowse) prowler:~%% ls -ld /Users/keen/backups drwxrwxrwx 33 root wheel 2048 Dec 13 03:05 /Users/keen/backups/
Я обнаружил это, когда пытался проверить индексацию местоположения только при монтировании afp:
prowler:/Volumes/keen%% grep FILESYSTE /etc/locate.rc FILESYSTEMS="afpfs" prowler:/Volumes/keen%% sudo /usr/libexec/locate.updatedbshell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied find: .: Permission denied
При запуске с $ PWD вне монтирования afp этой ошибки не было:
prowler:~%% sudo /usr/libexec/locate.updatedb prowler:~%%
но также не было никаких результатов:
prowler:~%% locate test-afpfs prowler:~%%
Итак, короткий ответ, который я нашел, - ДА! Вы можете найти, чтобы индексировать тома сети на OSX. НЕТ, вы не можете индексировать сетевой том afp.