Что означает ошибка Permission denied в Homebrew
Ошибка Permission denied (доступ запрещён) в Homebrew возникает, когда менеджер пакетов не может получить права на запись или чтение в системные директории, например, при попытке установить или обновить пакет. Типичный вывод ошибки выглядит так:
Error: Permission denied - /usr/local/include
или
brew: permission denied: /usr/local/Cellar
Эта ошибка блокирует выполнение команд brew install, brew update и других, требующих изменения файлов в защищённых папках.
Причины возникновения
Ошибка возникает по нескольким конкретным причинам:
- Неправильные права владельца — папки Homebrew (например,
/usr/localна Intel Mac или/opt/homebrewна Apple Silicon) принадлежат пользователюrootили другому аккаунту, а не текущему пользователю. - Отсутствие прав записи — даже если вы владелец, у вас может не быть флага
w(запись) для этих папок. - Конфликт с системой безопасности — антивирусы, брандмауэры или FileVault могут блокировать доступ Homebrew к системным ресурсам.
- Повреждённая установка — прерванная установка или ручное изменение файлов привело к неконсистентным правам.
- Попытка запуска без
sudo— некоторые команды требуют повышенных привилегий, но Homebrew по умолчанию не используетsudoдля безопасности.
Способы решения
Способ 1: Изменить владельца папок Homebrew
Это самый частый и эффективный способ. Вам нужно установить текущего пользователя как владельца всех файлов в директории Homebrew.
Для Mac с процессором Intel (путь по умолчанию /usr/local):
sudo chown -R $(whoami) /usr/local/*
Для Mac с Apple Silicon (путь по умолчанию /opt/homebrew):
sudo chown -R $(whoami) /opt/homebrew/*
Команда sudo запросит пароль администратора. chown меняет владельца, -R применяет изменения рекурсивно, $(whoami) подставляет ваш логин, а * охватывает все содержимое папки. После этого проверьте владельца: ls -la /usr/local (или /opt/homebrew). Первые столбцы должны показывать ваш пользователь.
Способ 2: Исправить права доступа
Если владелец уже верный, но ошибка persists, возможно, отсутствуют права записи. Исправьте их:
Для Intel Mac:
sudo chmod -R u+w /usr/local
Для Apple Silicon Mac:
sudo chmod -R u+w /opt/homebrew
chmod изменяет права доступа, u+w добавляет право записи (w) для владельца (u). После этого попробуйте снова выполнить команду Homebrew.
Способ 3: Переустановить Homebrew
Если предыдущие шаги не помогли, возможно, установка Homebrew повреждена. Полностью удалите и установите заново.
Удаление Homebrew:Intel Mac:
sudo rm -rf /usr/local/Homebrew
sudo rm -rf /usr/local/Caskroom
sudo rm -rf /usr/local/bin/brew
Apple Silicon Mac:
sudo rm -rf /opt/homebrew
Установка заново: Откройте Terminal и выполните:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Следуйте инструкциям на экране. Официальный скрипт автоматически настроит правильные права и пути.
Способ 4: Использовать sudo (временное решение)
Как крайняя мера, можно запускать команды Homebrew с sudo, но это не рекомендуется для постоянного использования, так как может привести к проблемам с безопасностью и правами в будущем.
Пример:
sudo brew install wget
Используйте этот метод только для срочных задач, пока не устраните корневую причину способами 1–3.
Профилактика
Чтобы избежать ошибки Permission denied в будущем:
- Устанавливайте Homebrew официальным способом — используйте скрипт с официального сайта, который автоматически настраивает права.
- Избегайте
sudoс brew — Homebrew Designed для работы без суперпользователя. Если требуетсяsudo, это признак неправильных прав. - Регулярно обновляйте Homebrew — выполняйте
brew updateиbrew upgrade, чтобы избежать конфликтов. - Проверяйте права после установки других ПО — некоторые программы (например, Docker или виртуальные машины) могут менять владельца системных папок.
- Настраивайте исключения в антивирусе — если используете стороннюю защиту, добавьте папки Homebrew в список доверенных.