Распространённые проблемы
Список часто встречающихся проблем, известных неполадок и способов их решения.
-
Запуск
brewbrewсообщает об отсутствии «Command Line Tools»- Ruby:
bad interpreter: /usr/bin/ruby^M: no such file or directory - Ruby:
bad interpreter: /usr/bin/ruby brew updateсообщает о неотслеживаемых файлах в рабочем деревеlaunchctlотказывается загружать plist-файлыlaunchdbrew upgradeзавершается с ошибкой- Python: не удаётся выполнить привязку
easy-install.pth
- Установка завершается с ошибкой «unknown revision or path not in the working tree»
- Обновление macOS
- Непреднамеренная установка двух копий Homebrew
- Проблемы Homebrew Cask
- Другие локальные проблемы
- Возможные проблемы с
curl
Запуск brew
brew сообщает об отсутствии «Command Line Tools»
Необходимо установить и обновить Xcode Command Line Utilities: выполните xcode-select --install в терминале.
Ruby: bad interpreter: /usr/bin/ruby^M: no such file or directory
Вы клонировали репозиторий с помощью git, а в конфигурации Git указано использовать окончания строк Windows. См. эту страницу о настройке Git для работы с окончаниями строк.
Ruby: bad interpreter: /usr/bin/ruby
У вас нет /usr/bin/ruby или он не является исполняемым. Не рекомендуется оставлять это без внимания: вас удивит, сколько .app, инструментов и скриптов рассчитывают на то, что файлы и каталоги macOS, предоставляемые системой, останутся неизменёнными с момента установки macOS.
brew update сообщает о неотслеживаемых файлах в рабочем дереве
После выполнения brew update появляется ошибка Git с предупреждением о неотслеживаемых файлах или локальных изменениях, которые будут перезаписаны при переключении на другую версию или слиянии, а затем выводится список файлов в каталоге установки Homebrew.
Причина — старая ошибка в коде update, которую давно исправили. Однако из-за особенностей этой ошибки необходимо выполнить следующие действия:
cd "$(brew --repository)" git reset --hard FETCH_HEAD
Если brew doctor по-прежнему сообщает о незакоммиченных изменениях, также выполните эту команду:
cd "$(brew --repository)/Library" git clean -fd
launchctl отказывается загружать plist-файлы launchd
При попытке загрузить plist-файл с помощью launchctl появляется ошибка, похожая на одну из следующих:
Bug: launchctl.c:2325 (23930):13: (dbfd = open(g_job_overrides_db_path, [...] launch_msg(): Socket is not connected
или:
Could not open job overrides database at: /private/var/db/launchd.db/com.apple.launchd/overrides.plist: 13: Permission denied launch_msg(): Socket is not connected
Вероятнее всего, причина заключается в одной из четырёх проблем:
- Вы используете iTerm. Решение: используйте Terminal.app при работе с
launchctl. - Вы используете мультиплексор терминала, например
tmuxилиscreen. Работайте сlaunchctlиз отдельной оболочки Terminal.app. - Вы пытаетесь запустить
launchctl, находясь в системе удалённо. Включите общий доступ к экрану на удалённом компьютере и выполните команду в Terminal.app, запущенном на этом компьютере. - Вы выполнили
suот имени другого пользователя.
brew upgrade завершается с ошибкой
При выполнении brew upgrade появляется сообщение, похожее на это:
Error: undefined method `include?' for nil:NilClass
Please report this bug:
https://docs.brew.sh/Troubleshooting
/usr/local/Library/Homebrew/formula.rb:393:in `canonical_name'
/usr/local/Library/Homebrew/formula.rb:425:in `factory'
/usr/local/Library/Contributions/examples/brew-upgrade.rb:7
/usr/local/Library/Contributions/examples/brew-upgrade.rb:7:in `map'
/usr/local/Library/Contributions/examples/brew-upgrade.rb:7
/usr/local/bin/brew:46:in `require'
/usr/local/bin/brew:46:in `require?'
/usr/local/bin/brew:79 Это происходит потому, что по какой-то причине осталась старая версия команды обновления. Исправление:
cd "$(brew --repository)/Library/Contributions/examples" git clean -n # if this doesn't list anything that you want to keep, then git clean -f # this will remove untracked files
Python: не удаётся выполнить привязку easy-install.pth
Warning: Could not link <formula>. Unlinking... Error: The `brew link` step did not complete successfully The formula built, but is not symlinked into /usr/local You can try again using `brew link <formula>' Possible conflicting files are: /usr/local/lib/python2.7/site-packages/site.py /usr/local/lib/python2.7/site-packages/easy-install.pth ==> Could not symlink file: /homebrew/Cellar/<formula>/<version>/lib/python2.7/site-packages/site.py Target /usr/local/lib/python2.7/site-packages/site.py already exists. You may need to delete it. To force the link and overwrite all other conflicting files, do: brew link --overwrite formula_name To list all files that would be deleted: brew link --overwrite --dry-run formula_name
Не следуйте приведённому здесь совету. Вместо этого исправьте проблему, используя Language::Python.setup_install_args в формуле, как описано в разделе Python для авторов формул.
Установка завершается с ошибкой «unknown revision or path not in the working tree»
При установке Homebrew, если первоначальная загрузка завершается ошибкой, похожей на эту:
error: Not a valid ref: refs/remotes/origin/main fatal: ambiguous argument 'refs/remotes/origin/main': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'
или:
fatal: the remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed
Проблема связана с соединением между вашим компьютером и GitHub, а не с ошибкой в самом Homebrew. В этой теме обсуждения приведены различные решения, найденные другими пользователями, например использование проводного подключения или VPN, а также отключение инструментов мониторинга сети.
Обновление macOS
После обновления macOS могут возникнуть следующие ошибки:
dyld: Library not loaded: /opt/homebrew/opt/icu4c/lib/libicui18n.76.dylibconfigure: error: Cannot find libz
После обновления macOS может потребоваться переустановить Xcode Command Line Tools, а затем brew upgrade все установленные формулы:
xcode-select --install brew upgrade
Непреднамеренная установка двух копий Homebrew
При использовании таких инструментов, как Ассистент миграции Apple (MA), могут непреднамеренно появиться две установки Homebrew. Чаще всего это происходит, когда MA копирует /usr/local и /Applications с Mac на базе Intel в те же каталоги на Mac с Apple Silicon. Это может вызвать проблемы, поскольку /Applications может содержать приложения только для x86_64. Если использовать эмулятор терминала x86_64, оболочка будет применять установку Homebrew в /usr/local вместо новой установки в /opt/homebrew — правильном пути для установки Homebrew arm64 в macOS.
Если продолжать использовать такую конфигурацию, со временем могут возникнуть проблемы, поэтому лучше перенести установку Homebrew. Для этого выполните следующие действия.
- Выполните
arch -x86_64 /usr/local/bin/brew bundle dump --global, чтобы сохранить список текущих установленных формул в~/.Brewfile. - Просмотрите содержимое
~/.Brewfileи удалите то, что больше не хотите устанавливать. -
Убедитесь, что эмулятор терминала работает в режиме arm64: результат выполнения
archдолжен бытьarm64.Если это не так, используйте другой эмулятор терминала, например Terminal.app от Apple, который будет работать в режиме
arm64. -
Установите Homebrew в правильный каталог (
/opt/homebrew); по умолчанию это произойдёт, если терминал работает в режиме arm64.Следуйте инструкциям раздела Следующие шаги, приведённым в конце процесса установки. Если не настроить соответствующим образом конфигурацию оболочки, установка Homebrew может перестать работать.
- Выполните
/opt/homebrew/bin/brew bundle install --global, чтобы повторить установку исходных формул с помощью новой установки Homebrew в/opt/homebrew.
Будьте готовы потратить некоторое время на поиск замен среди формул и cask-пакетов Homebrew для устаревших, отключённых или удалённых формул.
Когда вас устроит состояние новой установки Homebrew для /opt/homebrew, можно удалить старую установку /usr/local. Скачайте и запустите скрипт удаления:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)" -- --path=/usr/local
Дополнительную информацию см. в этой теме обсуждения.
Проблемы Homebrew Cask
Cask — ошибка cURL
Сначала разберём распространённую проблему: есть ли у вас файл .curlrc? Проверьте с помощью ls -A ~ | grep .curlrc (если команда выведет результат, файл существует). Такие файлы часто вызывают подобные проблемы. Прежде всего удалите этот файл и попробуйте ещё раз. Если после этого всё заработает, не создавайте сообщение о проблеме. Несовместимые конфигурации .curlrc необходимо исправить самостоятельно.
Если же у вас нет .curlrc или его удаление не помогло, выясним, связана ли проблема с источником:
- Перейдите на сайт поставщика (
brew home <cask_name>). - Найдите ссылку для загрузки приложения и нажмите её.
Если загрузка работает
Описание cask-пакета устарело. Давайте это исправим:
- Найдите на сайте приложения информацию о последней версии. Она может быть указана в URL-адресе загрузки.
- Проверьте версию cask-пакета (
brew info <cask_name>) и убедитесь, что она действительно устарела. Если версия приложения указана как:latest, это означает, что устарел самurl. Его нужно изменить на новую версию.
Помогите нам, отправив исправление. Если не знаете, что делать дальше, создайте сообщение о проблеме, описав выполненные действия и возникшие затруднения.
Если загрузка не работает
Проблема никак не связана с Homebrew Cask — она возникла у поставщика или в вашем подключении.
Для начала проверьте подключение (попробуйте загрузить другие cask-пакеты или просмотреть сайты в интернете). Если проблема связана с подключением, обратитесь за советом на сайт вроде Ask Different.
Если вы уверены, что проблема не связана с подключением, свяжитесь с поставщиком приложения и сообщите, что его ссылка не работает, чтобы он мог её исправить.
Не создавайте сообщение о проблеме.
Cask — контрольная сумма не совпадает
Сначала проверьте, не связана ли проблема с загрузкой. Удалите загруженный файл (его расположение будет указано в сообщении об ошибке) и попробуйте ещё раз.
Если проблема не исчезла, описание cask-пакета устарело. Вероятно, потребуется указать новую версию, но возможно, что версия осталась прежней (иногда поставщик обновляет приложение, не меняя номер версии).
- Перейдите на сайт поставщика (
brew home <cask_name>). - Узнайте номер последней версии. Он может быть указан в URL-адресе загрузки.
- Проверьте версию cask-пакета (
brew info <cask_name>) и убедитесь, что она действительно устарела. Если это так, её нужно обновить.
Помогите нам, отправив исправление. Если не знаете, что делать дальше, создайте сообщение о проблеме, описав выполненные действия и возникшие затруднения.
Cask — отказано в доступе
Вероятно, у вашей учётной записи нет прав администратора, а значит, нет и разрешения на запись в /Applications — каталог установки по умолчанию. Чтобы выбрать место установки приложений, можно использовать --appdir.
Если --appdir не помогло решить проблему или у вас есть разрешение на запись в /Applications, проверьте, являетесь ли вы владельцем каталога Caskroom: выполните ls -dl "$(brew --caskroom)" и проверьте третье поле. Если вы не владелец, исправьте это с помощью sudo chown -R "$(whoami)" "$(brew --caskroom)". Если вы владелец, проблема может заключаться в самом пакете приложения.
Некоторым пакетам приложений не хватает разрешений, необходимых для перемещения в нужное место. Проверить разрешения можно с помощью ls -ls '/path/to/application.app'. Если в начале вывода есть что-то вроде dr-xr-xr-x, возможно, причина в этом. Чтобы исправить ситуацию, нужно изменить разрешения пакета приложения, чтобы разрешить его перемещение, а затем вернуть их к исходным значениям (на случай, если разработчик установил их намеренно). Пример такого cask-пакета см. в файле litecoin.rb.
Помогите нам, отправив исправление. Если не знаете, что делать дальше, создайте сообщение о проблеме, описав выполненные действия и возникшие затруднения.
Cask — исходный файл отсутствует
Сначала определите, какой артефакт больше не обрабатывается должным образом. Это явно указано в сообщении об ошибке: если там написано It seems the App source…', проблема связана с директивой app. Тот же принцип действует для всех артефактов.
Обычно исправить эту ошибку несложно, и это потребует лишь немного времени. Для начала загрузите пакет cask-пакета: brew fetch <cask_name>. Последняя строка вывода укажет расположение загруженного файла. Перейдите туда и распакуйте его вручную. Например, структура архива может выглядеть так:
. ├─ Files/SomeApp.app ├─ Files/script.sh └─ README.md
А теперь посмотрим на cask-пакет с помощью brew cat <cask_name>:
(…) app "SomeApp.app" (…)
Cask-пакет ожидает, что SomeApp.app находится в корневом каталоге архива (обратите внимание, указано просто SomeApp.app), но разработчик переместил его в каталог Files. Достаточно изменить эту строку cask-пакета в соответствии с новой структурой: app "Files/SomeApp.app".
Иногда название приложения меняется полностью (например, с SomeApp.app на OtherApp.app). В таких случаях также нужно изменить имя файла cask-пакета и его токен. Полные инструкции по новому имени см. в разделе token reference.
Помогите нам, отправив исправление. Если не знаете, что делать дальше, создайте сообщение о проблеме, описав выполненные действия и возникшие затруднения.
Cask — неверное количество аргументов
Убедитесь, что проблема действительно связана с вашей версией macOS. Для этого попробуйте установить программное обеспечение вручную. Если оно несовместимо с вашей версией macOS, вы получите соответствующее сообщение. В этом случае мы ничем не сможем помочь с установкой программы, но можем добавить директиву depends_on macos:, чтобы предотвратить установку cask-пакета в несовместимых версиях macOS.
Помогите нам, отправив исправление. Если не знаете, что делать дальше, создайте сообщение о проблеме, описав выполненные действия и возникшие затруднения.
Другие локальные проблемы
Если установка Homebrew повреждена (и исправление проблем, обнаруженных с помощью brew doctor, не помогает), переустановка Homebrew может восстановить нормальное состояние. Чтобы упростить переустановку Homebrew, используйте brew bundle — эта команда автоматически восстановит установленные формулы и cask-пакеты. Для этого выполните brew bundle dump, удалите Homebrew, установите его повторно и выполните brew bundle install.
Возможные проблемы с curl
Иногда компьютер пользователя, его конфигурация или сетевое подключение могут вызывать проблемы при загрузке с помощью curl, не зависящие от Homebrew. Для правильной работы Homebrew требуется стабильное подключение к интернету и корректная конфигурация. Эти ссылки могут помочь выявить проблемы с cURL по кодам завершения curl и libcurl:
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/Common-Issues