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


106

У меня MacBook Pro с OS X 10.8.2. XCode установлен. Я знаю это, поскольку оно отображается в каталоге приложений. Также в / usr / bin есть файлы xcodebuild и xcode-select. Мне нужно знать, установлены ли инструменты командной строки. Есть ли для этого команда? Что я могу сделать, чтобы узнать, установлен ли XCode CLT, и если да, то найти установленную версию?


Версия XCode - 4.6
Вивек Нандаванам

Ответы:


104

Обновление 10.14 Мохаве:

См. Обновление Йосемити.

Обновление 10.13 High Sierra:

См. Обновление Йосемити.

Обновление 10.12 Sierra:

См. Обновление Йосемити.

Обновление 10.11 El Capitan:

См. Обновление Йосемити.

Обновление 10.10 Йосемити:

Просто введите gccили введите в makeкомандной строке! OSX узнает, что у вас нет инструментов командной строки, и предложит вам установить их!

Чтобы проверить, существуют ли они, xcode-select -pраспечатайте каталог. В качестве альтернативы возвращаемое значение будет, 2если они НЕ существуют, и 0если они существуют. Чтобы просто распечатать возвращаемое значение ( спасибо @Andy ):

xcode-select -p 1>/dev/null;echo $?

Обновление 10.9 Mavericks:

Использовать pkgutil --pkg-info=com.apple.pkg.CLTools_Executables

Обновление 10.8:

Вариант 1: Роб Нэпьер предложил использовать pkgutil --pkg-info=com.apple.pkg.DeveloperToolsCLI, что, вероятно, чище.

Вариант 2: Найдите внутри /var/db/receipts/com.apple.pkg.DeveloperToolsCLI.plistссылку, com.apple.pkg.DeveloperToolsCLIи в ней будет указана версия 4.5.0.

[Mar 12 17:04] [jnovack@yourmom ~]$ defaults read /var/db/receipts/com.apple.pkg.DeveloperToolsCLI.plist
{
    InstallDate = "2012-12-26 22:45:54 +0000";
    InstallPrefixPath = "/";
    InstallProcessName = Xcode;
    PackageFileName = "DeveloperToolsCLI.pkg";
    PackageGroups =     (
        "com.apple.FindSystemFiles.pkg-group",
        "com.apple.DevToolsBoth.pkg-group",
        "com.apple.DevToolsNonRelocatableShared.pkg-group"
    );
    PackageIdentifier = "com.apple.pkg.DeveloperToolsCLI";
    PackageVersion = "4.5.0.0.1.1249367152";
    PathACLs =     {
        Library = "!#acl 1\\ngroup:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:delete\\n";
        System = "!#acl 1\\ngroup:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:delete\\n";
    };
}

1
Я обнаружил, что при открытии xcode> Preferences> Downloads> Components была запись Command Line Tools, которая находилась в состоянии обновления, и когда я ее обновил, она показывает статус как установленный
Vivek Nandavanam

7
Вместо того, чтобы заходить в /var/db/receiptsкаталог, вы можете использовать для этого API:pkgutil --pkg-info=com.apple.pkg.DeveloperToolsCLI
Роб Напье,

8
Я могу ошибаться, но теперь название квитанции - это, CLTools_Executablesпо крайней мере, все, что я нахожу в OS Mavericks. Тогда команда будет такой:pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
Крис

1
заметил то же самое, что и Джордан. xcode-select не возвращает int, а только путь
Дэймон

1
Я ввел xcode-select-p только для того, чтобы получить /Applications/Xcode.app/Contents/Developer. Что это означает?
учеба

77

Йосемити

Ниже приведены несколько дополнительных шагов на новом Mac, которые могут понадобиться некоторым людям. Это немного добавляет отличного ответа @jnovack.

Обновление: несколько других примечаний при настройке:

Убедитесь, что у вашего администратора есть пароль. Пустой пароль не будет работать при попытке включить пользователя root.

System Preferences > Users and Groups > (select user) > Change password

Затем, чтобы включить root, запустите dsenablerootв терминале:

$ dsenableroot
username = mac_admin_user
user password:
root password:
verify root password:

dsenableroot:: ***Successfully enabled root user.

Введите пароль администратора, затем дважды новый активированный пароль root.

Следующий тип:

sudo gcc

или

sudo make

Он ответит примерно так:

WARNING: Improper use of the sudo command could lead to data loss
or the deletion of important system files. Please double-check your
typing when using sudo. Type "man sudo" for more information.

To proceed, enter your password, or type Ctrl-C to abort.

Password:


You have not agreed to the Xcode license agreements. You must agree to 
both license agreements below in order to use Xcode.

Нажмите Enter, когда он предложит вам показать лицензионное соглашение.

Hit the Enter key to view the license agreements at 
'/Applications/Xcode.app/Contents/Resources/English.lproj/License.rtf'

IMPORTANT: BY USING THIS SOFTWARE, YOU ARE AGREEING TO BE BOUND BY THE 
FOLLOWING APPLE TERMS:

//...

Нажмите, qчтобы выйти из режима просмотра лицензионного соглашения.

By typing 'agree' you are agreeing to the terms of the software license 
agreements. Type 'print' to print them or anything else to cancel, 
[agree, print, cancel]

Тип agree. А потом закончится:

clang: error: no input files 

Который в основном означает , что вы не дали makeили gccкаких - либо входных файлов.

Вот как выглядел чек:

$ xcode-select -p
/Applications/Xcode.app/Contents/Developer

Mavericks

С Mavericks сейчас все немного по-другому.

Когда инструменты НЕ были найдены, pkgutilкоманда вернула следующее:

$ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.

Чтобы установить инструменты командной строки, это прекрасно работает из Терминала, с красивым графическим интерфейсом и всем остальным.

$ xcode-select --install

http://macops.ca/installing-command-line-tools-automatically-on-mavericks/

Когда они были найдены, pkgutilкоманда вернула следующее:

$ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
package-id: com.apple.pkg.CLTools_Executables
version: 5.0.1.0.1.1382131676
volume: /
location: /
install-time: 1384149984
groups: com.apple.FindSystemFiles.pkg-group com.apple.DevToolsBoth.pkg-group com.apple.DevToolsNonRelocatableShared.pkg-group 

Эта команда вернула то же самое до и после установки.

$ pkgutil --pkg-info=com.apple.pkg.DeveloperToolsCLI
No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.

Также у меня раньше был выбран и установлен компонент для CLT в разделе загрузок xcode, но похоже, что он не попал в терминал ...

Надеюсь, это поможет.


Можете ли вы обновить этот ответ для последних операционных систем? Спасибо.
Спарки

Я вызвал sudo rm -rf / Library / Developer / CommandLineTools, а затем xcode-select --install.
Алексей Кислицын

32

Чтобы проверить, установлены ли инструменты командной строки, выполните:

xcode-select --version

// if installed you will see the below with the version found in your system
// xcode-select version 1234.

Если инструменты командной строки не установлены, запустите:

xcode-select --install

1
Просто и эффективно. Может быть лучшим ответом.
Bryan P

12

В macOS Sierra (10.12):

  1. Выполните следующую команду, чтобы узнать, установлен ли CLT:

    xcode-select -p

    это вернет путь к инструменту, если CLT уже установлен. Что-то вроде этого -

    /Applications/Xcode.app/Contents/Developer
  2. Выполните следующую команду, чтобы увидеть версию CLT:

    pkgutil --pkg-info=com.apple.pkg.CLTools_Executables

    это вернет информацию о версии, вывод будет примерно таким -

    package-id: com.apple.pkg.CLTools_Executables
    version: 8.2.0.0.1.1480973914
    volume: /
    location: /
    install-time: 1486372375
    

8

В macOS Catalina и, возможно, в некоторых более ранних версиях вы можете узнать, где установлены инструменты командной строки, используя:

xcode-select -p он же xcode-select --print-path

Который, если он установлен, ответит примерно так:

/Library/Developer/CommandLineTools

Чтобы узнать, какую версию вы там установили, вы можете использовать:

xcode-select -v он же xcode-select --version

Что вернет что-то вроде:

xcode-select version 2370.

Однако , если вы попытаетесь обновить его до последней версии, если она установлена, используя следующее:

xcode-select --install

В ответ вы получите:

xcode-select: error: command line tools are already installed, use "Software Update" to install updates

Что довольно ошибочно создает впечатление, что вам нужно использовать Spotlight для поиска чего-то под названием «Обновление программного обеспечения». На самом деле вам нужно продолжить в Терминале и использовать это:

softwareupdate -i -a он же softwareupdate --install --all

Которая пытается обновить все, что может, и вполне может ответить:

Software Update Tool

Finding available software
No new software available.

Чтобы узнать, какие версии различных пакетов Apple SDK установлены на вашем компьютере, используйте это:

xcodebuild -showsdks


3

Я думаю, что самый простой способ, который помог мне найти инструменты командной строки, установлен или нет, и его версия независимо от того, какая версия macOS

$brew config

macOS: 10.14.2-x86_64
CLT: 10.1.0.0.1.1539992718
Xcode: 10.1

Это когда у вас правильно установлены инструменты командной строки и правильно заданы пути.

Раньше я получал следующий вывод
: macOS: 10.14.2-x86_64
CLT: N / A
Xcode: 10.1

CLT был показан как N / A, несмотря на то, что у него есть gcc и он работает нормально и ниже выходов

$xcode-select -p              
/Applications/Xcode.app/Contents/Developer
$pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.
$brew doctor
Your system is ready to brew.

Наконец, выполнение xcode-select --install решило мою проблему с пивом, неспособным найти CLT для установки пакетов, как показано ниже.

Installing sphinx-doc dependency: python
Warning: Building python from source:
  The bottle needs the Apple Command Line Tools to be installed.
  You can install them, if desired, with:
    xcode-select --install

1

Перейдите в Приложения> Xcode> Настройки> загрузки.

Вы должны увидеть инструменты командной строки для установки.


1

С программной точки зрения у Homebrew есть проверка на наличие различных файлов, чтобы определить, установлены ли инструменты командной строки . В настоящее время он всегда проверяет, /Library/Developer/CommandLineTools/usr/bin/gitа также проверяет, установлена /usr/include/iconv.hли версия ОС 10.13 или ниже.



0

Поскольку Xcode включает инструменты CLI, если они установлены сначала, я использую следующий гибрид, который был проверен 10.12 и 10.14. Я ожидаю, что он работает во многих других версиях:

installed=$(pkgutil --pkg-info=com.apple.pkg.CLTools_Executables 2>/dev/null || pkgutil --pkg-info=com.apple.pkg.Xcode)

Соль awkпо вкусу для логики ветвления.

Конечно, xcode-select -pобрабатывает варианты с помощью очень короткой команды, но не может предоставить подробные метаданные о пакете, версии и дате установки.


0

Откройте свой терминал и проверьте, установлен ли у вас Xcode с этим:

xcode-select -p

взамен, если вы получите это:

/Library/Developer/CommandLineTools

Это означает, что у вас установлен Xcode.

Другой способ проверить, установлен ли у вас «HomeBrew», вы можете использовать следующую команду, чтобы узнать, есть ли у вас Xcode и версия:

brew config

И, наконец, если у вас нет Xcode, перейдите по этой ссылке, чтобы загрузить Xcode из Appstore. Xcode из App Store .

Удачи.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.