Подтвердить что ты не робот

Инструменты командной строки XCode 4.3

Недавно Apple выпустила Инструменты командной строки:

  • Каковы инструменты, предоставляемые в пакете инструментов командной строки?

  • Есть ли какая-то документация, отличная от man-страниц?

Обратите внимание, что я установил эти инструменты, добавив конкретный компонент в Xcode. Кроме того, речь идет не о проекте Xcode, а о пакете, выпущенном Apple 16 февраля 2012 года!

4b9b3361

Ответ 1

Откройте инструменты командной строки DMG, и вы найдете мета-пакет, который вы можете извлечь с помощью команды pkgutil --expand 'Command Line Tools.mpkg' metapackage. Откройте файл metapackage/Distribution, который был просто извлечен в текстовом редакторе, чтобы увидеть пакеты, которые содержат мета-пакет:

com.apple.pkg.DevSDK
com.apple.pkg.X11SDK
com.apple.pkg.QuickTimeSDK
com.apple.pkg.OpenGLSDK
com.apple.pkg.WebKitSDK
com.apple.pkg.FireWireSDK
com.apple.pkg.BluetoothSDK
com.apple.pkg.CoreAudioSDK
com.apple.pkg.JavaSDK
com.apple.pkg.clang
com.apple.pkg.llvm-gcc4.2
com.apple.pkg.X11Documentation
com.apple.pkg.DeveloperToolsCLI

Соответствующие файлы пакетов находятся в скрытом каталоге Packages рядом с метапакетом. Их содержимое можно указать с помощью pkgutil --payload-files.

Если у вас есть файл на диске и вы хотите узнать, из какого пакета он пришел:

$ pkgutil --file-info /usr/bin/clang
volume: /
path: /usr/bin/clang

pkgid: com.apple.pkg.clang
pkg-version: 4.3.0.0.1.1249367152
install-time: 1342021874
uid: 0
gid: 0
mode: 755

Теперь, некоторые данные о бонусах, которые будут полезны, если вы когда-нибудь захотите удалить инструменты командной строки. Apple, в своей бесконечной мудрости, отказывается предоставить инструмент для этого, но мы можем получить необходимую информацию, используя pkgutil для отображения информации об установленных пакетах.

Во-первых, pkgutil --pkgs отобразит все установленные пакеты. Сравните вывод списка вышеперечисленных пакетов.

pkgutil --info отобразит информацию о установленном пакете; например:

$ pkgutil --info com.apple.pkg.clang
package-id: com.apple.pkg.clang
version: 4.3.0.0.1.1249367152
volume: /
location: /
install-time: 1342021874
groups: com.apple.FindSystemFiles.pkg-group com.apple.DevToolsBoth.pkg-group com.apple.DevToolsNonRelocatableShared.pkg-group

pkgutil --files отобразит содержимое установленного пакета относительно полей volume и location, заданных pkgutil --info. Поскольку абсолютные пути не используются, вы не можете просто передать вывод этой команды в xargs rm -f, чтобы удалить файлы пакета; вам придется самим исправить пути, возможно, с чем-то вроде pkgutil --files com.example.pkgname | while read line; do rm -f "/install_location/$line"; done.

Как только файлы пакета удаляются, необходимо запустить pkgutil --forget, чтобы удалить информацию о установленном пакете из базы данных пакета.

Разумеется, вы должны быть очень осторожны, если вы попробуете это: вы один отпечаток, чтобы не повредить вашу систему настолько плохо, что вам придется переустановить ее, не говоря уже о ваших ценных данных!

pkgutil имеет несколько других полезных опций для проверки наличия всех файлов пакета и для восстановления их разрешений; см. его страницу руководства для деталей.

В общем, это будет работать для любого пакета, однако обратите внимание, что некоторые пакеты могут иметь встроенные скрипты, которые запускаются при установке пакета; очевидно, что просто удаление файлов пакета не удалит все следы пакета из вашей системы. Вам нужно будет извлечь содержимое пакета и прочитать исходный код script, а затем решить, как лучше всего отменить эффекты script самостоятельно.

Ответ 2

У меня была аналогичная проблема: я не смог запустить "make" после обновления до Xcode 4.3. Чтобы исправить это, я просто установил переменную PATH:

/Applications/Xcode.app/Contents/Developer/usr/bin
/Applications/Xcode.app/Contents/Developer/Tools

Как только я установил эту настройку, заменив мои старые записи PATH ссылкой на /Developer, я смог снова запустить "make" из командной строки.