Почему врач brew останавливается на mdfind?

Проблема

У меня были проблемы с доморощенным, поэтому я решил запустить brew doctor, но он просто застопорился на mdfind. brew --config также зависает на mdfind после вывода следующего:

HOMEBREW_VERSION: 0.9.4
ORIGIN: https://github.com/mxcl/homebrew
HEAD: c2cc58163b54a9ea2ee56febfc722396079c5b9a
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CELLAR: /usr/local/Cellar
CPU: quad-core 64-bit sandybridge
OS X: 10.8.3-x86_64
Xcode: 4.6.2
CLT: 4.6.0.0.1.1365549073
LLVM-GCC: build 2336
Clang: 4.2 build 425

brew update, похоже, работает:

$ brew update
Already up-to-date.

Я даже могу установить вещи:

$ brew install rsnapshot
==> Downloading http://rsnapshot.org/downloads/rsnapshot-1.3.1.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/rsnapshot/1.3.1 --mandir=/usr/local/C
==> make install
🍺  /usr/local/Cellar/rsnapshot/1.3.1: 12 files, 356K, built in 4 seconds

И они даже работают:

$ rsnapshot
rsnapshot 1.3.1
Usage: rsnapshot [-vtxqVD] [-c cfgfile] [command] [args]
Type "rsnapshot help" or "man rsnapshot" for more information.  

Что я пробовал

  • удаление всех пакетов
  • разворачивание всех бочонков
  • переустановка homebrew
  • переустановка инструментов командной строки XCode +.
  • Установка XQuartz (который мне пришлось выполнять через командную строку)
  • повторная индексация моего системного диска с помощью Spotlight
  • сброс пути выбора xcode
  • удаление /usr/share/xcode-select/

Обход

После запуска brew doctor, если я дважды завершаю процесс mdfind (один экземпляр появляется после завершения другого), я, наконец, получаю успешное возвращение:

$ brew doctor
Your system is ready to brew.

То же самое касается конфигурации:

$ brew --config
OMEBREW_VERSION: 0.9.4
ORIGIN: https://github.com/mxcl/homebrew
HEAD: c2cc58163b54a9ea2ee56febfc722396079c5b9a
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CELLAR: /usr/local/Cellar
CPU: quad-core 64-bit sandybridge
OS X: 10.8.3-x86_64
Xcode: 4.6.2
CLT: 4.6.0.0.1.1365549073
LLVM-GCC: build 2336
Clang: 4.2 build 425
X11: 2.7.4 => /opt/X11
System Ruby: 1.8.7-358
Perl: /usr/bin/perl
Python: /usr/bin/python
Ruby: /usr/bin/ruby => /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

Обратите внимание, что следующий элемент в конфигурации после обычной точки останова - X11.

Подробнее

Недавно мне пришлось удалить вручную скомпилированную версию ICU из моей системы, и есть небольшая вероятность, что я фактически удалил несколько двоичных файлов, которые не были установлены ICU. Я не уверен, но я думал, что упомянул об этом на всякий случай. Даже если это действительно звучит очень глупо.

brew doctor не дает результата при завершении.

brew doctor похоже, останавливается на проверке check_for_latest_xquartz, в частности, которую я проверил с помощью:

$ brew doctor check_for_latest_xquartz

Мой путь xcode-select кажется правильным:

$ xcode-select --print-path
/Applications/Xcode.app/Contents/Developer

mdfind может найти XQuartz:

$ mdfind "kMDItemCFBundleIdentifier == 'org.macosforge.xquartz.X11'"
/Applications/Utilities/XQuartz.app

... но он все равно не возвращается.

Ссылки по теме

Ответ 1

Последнее сообщение в вашей ссылке GitHub, похоже, отвечает на вопрос:

Это, безусловно, самая полезная тема на этой очень неприятной теме. Я пробовал все выше и обнаружил, что brew доктор висел на:

check_for_autoconf (kill mdfind 2x)
check_for_latest_xquartz (kill mdfind 2x)
check_for_linked_keg_only_brews (kill mdfind 4x)
check_for_osx_gcc_installer (kill mdfind 2x)
check_for_stray_developer_directory (kill mdfind 2x)
check_missing_deps (kill mdfind 2x)
check_standard_compilers (kill mdfind 1x)
Note that killing mdfind multiple times at least allows brew doctor to continue but that is not a solution.

Когда brew доктор наконец закончил, я заметил одно предупреждение:

check_user_path_2
Warning: Homebrew bin was not found in your PATH.
Consider setting the PATH for example like so
    echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile

Добавлен экспорт PATH=/usr/local/bin:$PATH в ~/.bash_profile. Это было также в начале ~/.bash_profile и дважды в конце, поэтому я удалил все, кроме последнего оператора. Открыв новое окно терминала, теперь /usr/local/bin находится в начале моего пути, а не в середине.

Теперь brew врач работает без зависания!

Если это не решит проблему, я предлагаю внести свой вклад в эту тему на GitHub или открыть новую проблему в GitHub, так как это может быть ошибка в доморощенных.