Как я могу сказать Spotlight проиндексировать мои пакеты.dSYM?

Сегодня я впервые попытался - и не смог - символизировать журнал сбоев на недавно купленном MacBook (назовем этот аппарат MB1). MB1 поставляется с предустановленной Mac OS X 10.9. Я отследил проблему неуспешной символики, чтобы Spotlight не проиндексировал ни одну из моих .dSYM связки (без индекса Spotlight, Apple's symbolicatecrash Сценарий не может найти .dSYM связка, соответствующая журналу сбоев). Я пришел к своему выводу, потому что

mdfind "com_apple_xcode_dsym_uuids == *"

ничего не печатает, хотя у меня несколько .xcarchive пачки в моем ~/Library/Developer/Xcode/Archives папка, и они определенно содержат .dSYM подгруппы, UUID которых я могу распечатать dwarfdump --uuid, У меня тоже есть пара .dSYM связки внутри папки сборки моего проекта (DerivedData), но ни один из них тоже не индексируется.

Поэтому короткий и простой вопрос: как я могу сказать Spotlight индексировать мои пакеты.dSYM?


Если на этот простой вопрос нет простого ответа, вот что я уже пробовал на MB1:

  • Проверьте права доступа к файлам и папкам в ~/Library/Developer/Xcode/Archives (все в порядке, 755 для папок, 644 для файлов)
  • Бежать mdimport ~/Library/Developer/Xcode/Archives (не имеет никакого эффекта)
  • В "Системные настройки> Spotlight > Privacy" сначала добавьте, а затем удалите ~/Library/Developer/Xcode/Archives папка (также не имеет никакого эффекта)
  • Проверить с mdutil -s / что для тома включена индексация
  • Стереть и перестроить весь индекс mdutil -E / (занимает, может быть, 10-15 минут, но все равно не действует)

Если говорить более подробно: у меня есть старый MacBook (назовем этот компьютер MB2), который был моей машиной для разработки, прежде чем я переключился на MB1. На MB2 у меня никогда не было проблем с символикой. На MB2 была установлена ​​Mac OS X 10.8, в то время как я все еще активно работал над ней, но недавно я обновил MB2 до Mac OS X 10.9.

Сегодня работает mdfind на MB2 все еще дает мне много .dSYM связки, как из Archives папка и из проекта DerivedData создать папку. Это все старые файлы Mac OS X за 10,8 дней, но, очевидно, Spotlight сохраняет свой индекс при обновлении ОС. Я подумал, что было бы интересно посмотреть, как Spotlight ведет себя при создании новых файлов, поэтому я сделал следующее:

  1. Запустите Xcode на MB2, создайте новый архив и запустите mdfind, Это находит промежуточный .dSYM расслоение внутри DerivedData создать папку.
  2. Удалить промежуточный .dSYM связать и запустить mdfind снова. На этот раз результатов нет, т.е. .dSYM расслоение внутри Archives папка НЕ ​​найдена!
  3. Сделайте копию .xcarchive пакет, созданный на шаге 1, и поместите копию в корень домашнего каталога пользователя. Бежать mdfind, Это находит .dSYM вложенный комплект внутри скопированного .xcarchive расслоение!

В этот момент я пришел к выводу, что из-за ~/Library это скрытая папка, это то, что мешает Spotlight индексировать вещи внутри нее. Это может быть легко подтверждено созданием обычного файла внутри ~/Library и искать его (без попаданий), а затем перемещать файл за пределы ~/Library и поиск снова (1 хит). К сожалению, эта теория терпит неудачу по двум причинам:

  • ~/Library был уже скрыт в версиях Mac OS X до 10.9, но это никогда не мешало Spotlight индексировать .dSYM файлы
  • "Скрытый" флаг - не все, что удерживает Spotlight от индексации содержимого в ~/Library: Если я раскрою папку с chflags nohidden ~/Library, это не делает обычный файл видимым для Spotlight.

Вернемся к MB1: я пытался повторить шаг 3 сверху, т.е. сделать копию .xcarchive в корне домашнего каталога пользователя, затем запустите mdfind, Удивительно, но на MB1 результат отличается от MB2: mdfind до сих пор не находит нет .dSYM связки вообще!


На данный момент я сдаюсь и надеюсь на вашу помощь. Я пришел к выводу, что Mac OS X 10.9 так или иначе отвечает за мои проблемы, но я не могу понять, почему это так. Если это поможет, вот несколько дополнительных деталей конфигурации:

  • MB1: установлены Xcode 5.0.2 и Xcode 4.6, по умолчанию 5.0.2 (устанавливается с xcode-select). Также установлен Homebrew. Система представляет собой чистую установку Mac OS X 10.9.
  • MB2: Xcode 4.5, 4.6 и 5.0 установлены, 4.6 по умолчанию. Также установлен MacPorts. Система является обновленной установкой Mac OS X 10.9 (установлена ​​ранее).

1 ответ

Решение

Изучение пакета приложений Xcode позволяет обнаружить следующих импортеров Spotlight:

caradhras:~ --> find /Applications/Xcode-5.0.2.app -name \*.mdimporter
/Applications/Xcode-5.0.2.app/Contents/Applications/Application Loader.app/Contents/Library/Spotlight/MZSpotlight.mdimporter
/Applications/Xcode-5.0.2.app/Contents/Library/Spotlight/uuid.mdimporter

Выполнение этой команды

mdimport -g /Applications/Xcode-5.0.2.app/Contents/Library/Spotlight/uuid.mdimporter ~

наконец индексирует .xcarchive пакет, который находится в корне домашнего каталога пользователя. НЕ индексирует пакеты в ~/Library/Developer/Xcode/ArchivesВпрочем, даже когда я явно указываю mdimport в эту папку.

Остается вопрос: почему uuid.mdimporter не запускается автоматически?


РЕДАКТИРОВАТЬ

Решение состояло в том, чтобы перезагрузить компьютер (могло быть достаточно выхода из системы / входа в систему), архивные пакеты за пределами ~/Library теперь правильно проиндексированы. Причина, почему мне нужно было перезагрузить, вероятно, заключается в следующем:

  • Я использую привилегированного пользователя-администратора (A) для установки программного обеспечения, но я использую другого непривилегированного пользователя (U) для нормальной работы, например, разработки с использованием Xcode.
  • Я вошел в систему с пользователем U в то время, когда я установил XCode с пользователем A
  • С тех пор я ни разу не перезагружался и не делал никаких входов в систему (я предпочитаю отправлять мою машину спать ночью, а не выключать ее). Предположительно, список активных импортеров Spotlight обновляется (возможно, службами запуска) только при выходе из системы / выходе или после перезагрузки.

Во всяком случае, во время устранения неполадок я обнаружил, что вы можете проверить список активных импортеров Spotlight, запустив mdimport -L (обратите внимание, что разные пользователи могут иметь разных импортеров Spotlight одновременно). Неудивительно, что после перезагрузки uuid.mdimporter сейчас в списке, пока до перезагрузки его не было.

Вот полезный документ Apple, который я нашел после некоторого поиска в Google: поиск и устранение неисправностей для импортеров Spotlight.


ОКОНЧАТЕЛЬНОЕ РЕШЕНИЕ

Настройте Xcode так, чтобы папка архива находилась вне ~/Library, В Xcode 6 вы можете сделать это в диалоге настроек на вкладке "Местоположения".

Другие вопросы по тегам