Что означает ошибка лицензии Xcode
Ошибка "You have not agreed to the Xcode license agreements" (или её русскоязычный вариант) появляется при попытке использовать Xcode, Command Line Tools (xcodebuild, clang, git и другие) на macOS. Система блокирует выполнение, требуя принять лицензионное соглашение Apple. Типичные сценарии:
- Запуск
xcodebuildв терминале. - Использование
gitпосле установки Xcode. - Сборка проектов через
makeилиcmake. - Запуск Xcode из App Store или Dock.
Полный текст ошибки:
xcodebuild: error: You have not agreed to the Xcode license agreements. Please open Xcode to accept the license agreement, or run `sudo xcodebuild -license` to view and accept the license agreements from the command line.
Причины возникновения
- Первоначальная установка Xcode или Command Line Tools
После установки лицензия не принимается автоматически. Требуется явное подтверждение. - Обновление macOS или Xcode
При крупном обновлении системы (например, с macOS Monterey до Ventura) или Xcode лицензионное соглашение может сбрасываться. - Запуск инструментов без графического интерфейса
На серверах, в Docker-контейнерах или через SSH Xcode не запускается в GUI, поэтому лицензия не принимается интерактивно. - Повреждение кэша лицензии
Редко, но возможно повреждение файла лицензии в/Library/Developer/CommandLineTools/или~/Library/Developer/. - Использование устаревшей версии Command Line Tools
Если в системе остались старые инструменты после обновления Xcode, они могут конфликтовать.
Способ 1: Принятие лицензии через терминал (основной)
Это самый быстрый и универсальный метод, работающий даже без графического интерфейса.
- Откройте Терминал
Используйте Spotlight (Cmd+Space → введите "Terminal") или найдите приложение вПрограммы → Утилиты. - Запустите команду принятия лицензии
Введите:sudo xcodebuild -license
Нажмите Enter. Система запросит пароль администратора (символы не отображаются — вводите вслепую). - Прокрутите лицензионное соглашение
Нажимайте пробел для прокрутки текста до конца. После появления строки:By typing 'agree' you are agreeing to the terms of the software license agreements.
Введитеagreeи нажмите Enter. - Проверьте результат
Выполните:xcodebuild -version
Если вывод показывает версию Xcode (например,Xcode 15.0), ошибка устранена.
⚠️ Важно: Команда
sudoтребует прав администратора. Убедитесь, что учётная запись имеет привилегии sudo.
Способ 2: Принятие через графический интерфейс Xcode
Если у вас доступен GUI (например, на рабочей станции), можно принять лицензию через само приложение Xcode.
- Запустите Xcode
Найдите Xcode в Launchpad или через Spotlight. При первом запуске появится окно с лицензионным соглашением. - Примите лицензию
Нажмите Agree в нижнем правом углу окна. Если окно не появилось, перейдите в меню:Xcode → Settings → Locations → Command Line Tools
Выберите последнюю версию инструментов и закройте настройки — Xcode может предложить принять лицензию. - Перезапустите терминал
После принятия лицензии закройте и откройте Терминал заново, чтобы изменения вступили в силу.
Способ 3: Принудительное принятие для автоматизации (CI/CD)
В средах без пользовательского ввода (например, GitHub Actions, Jenkins) используйте неинтерактивный режим.
- Выполните команду с автоматическим согласием
sudo xcodebuild -license accept
Эта команда принимает лицензию без прокрутки текста. Работает в Xcode 13+. - Для более старых версий Xcode
Если-license acceptнедоступен, используйте:sudo xcodebuild -license < <(echo agree)
Это эмулирует вводagreeв интерактивном режиме. - Проверьте в скрипте
Добавьте в CI-пайплайн:#!/bin/bash if ! xcodebuild -checkFirstLaunchStatus 2>/dev/null; then sudo xcodebuild -license accept fi
Команда-checkFirstLaunchStatusпроверяет, принята ли лицензия (доступна в Xcode 14+).
Способ 4: Переустановка Command Line Tools
Если ошибка persists после принятия лицензии, возможно, повреждены сами инструменты.
- Удалите текущие Command Line Tools
sudo rm -rf /Library/Developer/CommandLineTools - Установите заново
xcode-select --install
Или черезsoftwareupdate:softwareupdate --install -a - Примите лицензию
После установки повторите Способ 1.
Профилактика
- При обновлении macOS/Xcode сразу принимайте лицензию через терминал, чтобы избежать сбоев в CI/CD.
- В скриптах развёртывания добавляйте автоматическое принятие лицензии (Способ 3) в начале.
- Для серверов установите Xcode или Command Line Tools из пакета
.pkgи сразу выполнитеsudo xcodebuild -license accept. - Регулярно проверяйте статус лицензии в автоматизированных средах:
xcodebuild -checkFirstLaunchStatus || echo "License not accepted"
Дополнительные нюансы
Ошибка в Docker-контейнерах
Если вы собираете образ на базе macOS (например, для тестирования), добавьте в Dockerfile:
RUN xcodebuild -license accept
Это предотвратит падение сборки при первом использовании Xcode.
Несколько версий Xcode
При наличии нескольких версий Xcode (например, через xcode-select) примите лицензию для каждой:
sudo xcodebuild -license -firstLaunch # Для активной версии
sudo xcode-select -s /Applications/Xcode_14.3.app/Contents/Developer
sudo xcodebuild -license -firstLaunch # Для второй версии
Проблемы с правами sudo
Если команда sudo xcodebuild -license завершается с ошибкой прав, проверьте:
sudo -v # Обновляет кэш sudo
dscl . -read /Groups/admin GroupMembership $USER # Проверяет, входит ли пользователь в группу admin
Логирование принятия
Чтобы убедиться, что лицензия принята, проверьте файл:
cat /var/db/.AppleSetupDone # Если файл существует, настройка завершена
Однако основной индикатор — успешный вывод xcodebuild -version.
Совместимость с старыми macOS
На macOS 10.15 (Catalina) и ранее команда -license accept может отсутствовать. Используйте интерактивный режим или обновите Xcode до версии 13+.
Восстановление после сбоя
Если терминал завис при прокрутке лицензии, нажмите Ctrl+C и повторите команду. Иногда помогает:
sudo xcodebuild -license < /dev/null
Это пропускает интерактивный режим, но может не сработать в новых версиях.
Заключение
Ошибка лицензии Xcode — типичная проблема после установки или обновления, но решается одной командой в терминале. Ключевые моменты:
- Используйте
sudo xcodebuild -licenseдля интерактивного принятия. - В автоматизированных средах применяйте
sudo xcodebuild -license accept. - При частых сбоях проверьте целостность Command Line Tools.
Эти методы покрывают 99% случаев на macOS 12+ с Xcode 14+. Если проблема остаётся, проверьте, что Xcode установлен корректно, и учётная запись имеет права администратора.