Spec-Zone.ru › Homebrew

Распространённые проблемы

Список часто встречающихся проблем, известных неполадок и способов их решения.

  • Запуск brew
    • brew сообщает об отсутствии «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-файлы launchd
    • brew upgrade завершается с ошибкой
    • Python: не удаётся выполнить привязку easy-install.pth
  • Установка завершается с ошибкой «unknown revision or path not in the working tree»
  • Обновление macOS
  • Непреднамеренная установка двух копий Homebrew
  • Проблемы Homebrew Cask
    • Cask — ошибка cURL
    • Cask — контрольная сумма не совпадает
    • Cask — отказано в доступе
    • Cask — исходный файл отсутствует
    • 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

Вероятнее всего, причина заключается в одной из четырёх проблем:

  1. Вы используете iTerm. Решение: используйте Terminal.app при работе с launchctl.
  2. Вы используете мультиплексор терминала, например tmux или screen. Работайте с launchctl из отдельной оболочки Terminal.app.
  3. Вы пытаетесь запустить launchctl, находясь в системе удалённо. Включите общий доступ к экрану на удалённом компьютере и выполните команду в Terminal.app, запущенном на этом компьютере.
  4. Вы выполнили 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.dylib
  • configure: 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. Для этого выполните следующие действия.

  1. Выполните arch -x86_64 /usr/local/bin/brew bundle dump --global, чтобы сохранить список текущих установленных формул в ~/.Brewfile.
  2. Просмотрите содержимое ~/.Brewfile и удалите то, что больше не хотите устанавливать.
  3. Убедитесь, что эмулятор терминала работает в режиме arm64: результат выполнения arch должен быть arm64.

    Если это не так, используйте другой эмулятор терминала, например Terminal.app от Apple, который будет работать в режиме arm64.

  4. Установите Homebrew в правильный каталог (/opt/homebrew); по умолчанию это произойдёт, если терминал работает в режиме arm64.

    Следуйте инструкциям раздела Следующие шаги, приведённым в конце процесса установки. Если не настроить соответствующим образом конфигурацию оболочки, установка Homebrew может перестать работать.

  5. Выполните /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 или его удаление не помогло, выясним, связана ли проблема с источником:

  1. Перейдите на сайт поставщика (brew home <cask_name>).
  2. Найдите ссылку для загрузки приложения и нажмите её.

Если загрузка работает

Описание cask-пакета устарело. Давайте это исправим:

  1. Найдите на сайте приложения информацию о последней версии. Она может быть указана в URL-адресе загрузки.
  2. Проверьте версию cask-пакета (brew info <cask_name>) и убедитесь, что она действительно устарела. Если версия приложения указана как :latest, это означает, что устарел сам url. Его нужно изменить на новую версию.

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

Если загрузка не работает

Проблема никак не связана с Homebrew Cask — она возникла у поставщика или в вашем подключении.

Для начала проверьте подключение (попробуйте загрузить другие cask-пакеты или просмотреть сайты в интернете). Если проблема связана с подключением, обратитесь за советом на сайт вроде Ask Different.

Если вы уверены, что проблема не связана с подключением, свяжитесь с поставщиком приложения и сообщите, что его ссылка не работает, чтобы он мог её исправить.

Не создавайте сообщение о проблеме.

Cask — контрольная сумма не совпадает

Сначала проверьте, не связана ли проблема с загрузкой. Удалите загруженный файл (его расположение будет указано в сообщении об ошибке) и попробуйте ещё раз.

Если проблема не исчезла, описание cask-пакета устарело. Вероятно, потребуется указать новую версию, но возможно, что версия осталась прежней (иногда поставщик обновляет приложение, не меняя номер версии).

  1. Перейдите на сайт поставщика (brew home <cask_name>).
  2. Узнайте номер последней версии. Он может быть указан в URL-адресе загрузки.
  3. Проверьте версию 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:

  • https://everything.curl.dev/cmdline/exitcode.html
  • https://curl.se/libcurl/c/libcurl-errors.html

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/Common-Issues

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API