Введение / Зачем это нужно
Homebrew — незаменимый менеджер пакетов для macOS, но его работа может быть нарушена из-за некорректных прав доступа к системным каталогам. Это часто проявляется после ручной установки, сбоя обновления macOS или когда Homebrew был запущен с sudo. Ошибки вида permission denied или предупреждения brew doctor о том, что каталог /usr/local (Intel) или /opt/homebrew (Apple Silicon) не доступен для записи, блокируют установку и обновление пакетов.
Данный гайд поможет вам безопасно восстановить правильные права владельца для каталогов Homebrew, вернув менеджер пакетов в рабочее состояние без необходимости полностью переустанавливать его.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас установлена последняя версия macOS (12 Monterey или новее).
- Homebrew уже установлен (проверьте командой
brew --version). - У вас есть доступ к учётной записи с правами администратора (для использования
sudoв случае, если текущие права очень сильно нарушены, но в основном решенииsudoне потребуется). - Вы знакомы с основами работы в Терминале.
Пошаговая инструкция
Шаг 1: Диагностика текущих прав доступа
Первым делом нужно понять, есть ли проблема и где именно она.
- Запустите диагностику Homebrew:
brew doctor
Внимательно прочитайте вывод. Ищите строки, содержащиеWarningилиErrorи упоминающиеpermissions,writable, или пути/usr/local//opt/homebrew. - Проверьте текущего владельца и права на основной каталог Homebrew. Для Mac на процессорах Intel (обычный путь):
ls -la /usr/local
Для Mac на Apple Silicon (M1/M2/M3 и новее):ls -la /opt/homebrew
В столбце владельца (первый после прав доступа) вы должны видеть ваше имя пользователя. Если тамrootили другой пользователь — это проблема.
Шаг 2: Определение вашего пользователя и группы
Для команды исправления нам понадобятся имя вашего пользователя и, как правило, группа staff.
- Узнайте имя вашего пользователя:
whoami
Команда вернёт, например,ivanpetrov. - Обычно группа пользователя в macOS называется
staff. Вы можете убедиться, выполнив:id -gn
Это вернётstaffдля стандартной настройки.
Шаг 3: Исправление прав для каталога Homebrew
Теперь выполним основную команду, которая установит вас как владельца всего дерева каталогов Homebrew.
- Для Mac на Intel (путь
/usr/local):sudo chown -R $(whoami):staff /usr/local/*sudo— запрашивает права суперпользователя, так как изменение владельца системных каталогов требует повышенных привилегий.chown— команда смены владельца (change owner).-R— рекурсивно, применяет ко всем вложенным файлам и папкам.$(whoami):staff— устанавливает владельца на вашего пользователя и группуstaff./usr/local/*— применяет ко всем элементам внутри/usr/local.
- Для Mac на Apple Silicon (путь
/opt/homebrew):sudo chown -R $(whoami):staff /opt/homebrew/*
Шаг 4: Проверка исправления
- Снова проверьте владельца каталога, чтобы убедиться в смене:
# Для Intel ls -la /usr/local | head -5 # Для Apple Silicon ls -la /opt/homebrew | head -5
В первой строке вывода (для каталога.или самогоhomebrew) владелец должен быть вашим именем пользователя. - Запустите
brew doctorещё раз:brew doctor
Если всё сделано правильно, предупреждения о правах доступа должны отсутствовать. Вывод должен заканчиваться фразойYour system is ready to brew.. - Финальный тест: попробуйте установить любой пакет, например,
wget:brew install wget
Установка должна пройти без ошибокpermission denied.
Проверка результата
Главный признак успешного исправления — отсутствие предупреждений о правах доступа в выводе brew doctor и успешная установка нового пакета через brew install. Вы также можете проверить, что команды brew update и brew upgrade работают без запроса пароля.
Возможные проблемы
- Команда
chownзавершается с ошибкойOperation not permitted: Убедитесь, что вы вводите команду точно как показано выше. Если проблема сохраняется, попробуйте выполнить команду безsudo(если вы уже являетесь владельцем каталога) или, наоборот, убедитесь, что у вашего аккаунта есть права администратора для использованияsudo. - Ошибка
No such file or directoryприls -la: Возможно, у вас нестандартная установка Homebrew. Проверьте, где实际上 находится Homebrew, командойbrew --prefix. Используйте полученный путь вместо/usr/localили/opt/homebrewв шагах 1 и 3. brew doctorвсё ещё показывает ошибки после исправления: В редких случаях проблема может быть в другом каталоге (например,/Library/Caches/Homebrew). Очистите кеш Homebrew:brew cleanupи повторите диагностику. Если ошибка указывает на конкретный путь, примените командуsudo chown -R $(whoami):staff <этот_путь>.- После исправления перестали работать некоторые установленные пакеты: Это маловероятно, но если произошло, возможно, сломались символические ссылки. Переустановите проблемный пакет:
brew reinstall <имя_пакета>.