Если вы изменили конфигурацию службы Homebrew и хотите, чтобы изменения вступили в силу, перезапустите эту службу по имени формулы: brew services restart formula. Например, используйте brew services restart postgresql@16, если установлена именно эта формула. Homebrew при необходимости остановит службу, запустит её снова и зарегистрирует для запуска при входе в систему. После этого проверьте список служб, чтобы подтвердить её отображаемое состояние.

Перед перезапуском определите службу и конфигурацию

Службы Homebrew управляют фоновыми процессами с помощью macOS launchctl. Без sudo Homebrew работает с объектами LaunchAgents текущего пользователя, которые запускаются при входе в систему. С sudo она работает с системными LaunchDaemons, которые запускаются при загрузке системы. Справочное руководство Homebrew по brew services описывает это различие, поэтому используйте тот же уровень привилегий, с которым служба была изначально запущена; переключение между контекстами пользователя и root может привести к проверке или изменению другой регистрации службы.

Если вы не уверены в имени формулы, выведите список служб, которыми Homebrew управляет для вашего текущего пользователя:

brew services list

В списке могут отображаться имя службы, статус, пользователь и путь к файлу plist. Используйте указанное там имя формулы в команде перезапуска. Избегайте флага --all, если только вы не намерены перезапустить абсолютно все управляемые службы, так как это повлияет не только на ту, конфигурацию которой вы изменили. В документации также описана команда brew services list --debug для получения дополнительных сведений от Homebrew и launchctl при устранении неполадок.

Примените изменение с помощью brew services restart

Выполните перезапуск в Терминале от имени той же учетной записи macOS, которая запускает службу:

brew services restart postgresql@16

Замените postgresql@16 формулой, найденной в списке служб. Имя с указанием версии приведено лишь для примера. Homebrew определяет restart как остановку службы при необходимости и немедленный ее запуск с попутной регистрацией для запуска при входе в систему (или при загрузке системы, если используется sudo). Это делает команду restart подходящей, когда работающей службе необходимо перезагрузить конфигурацию. Справочник по командам описывает данное поведение, а также необязательные флаги --all и --file.

Не добавляйте sudo автоматически. Используйте его только в том случае, если служба была намеренно зарегистрирована как системная, и вы хотите управлять регистрацией на уровне root. В противном случае sudo может обратиться к другому LaunchDaemon, а служба пользовательского уровня останется незатронутой. Если вам просто нужно запустить процесс один раз без регистрации для автозапуска при входе в систему, в документации Homebrew приводится команда brew services run formula; эта команда не заменяет перезапуск для службы, которая должна оставаться управляемой.

Проверьте результат и устраните неполадки в случае сбоя перезапуска

После завершения команды снова проверьте список управляемых служб:

brew services list

Убедитесь, что нужная формула отображается со статусом started, и проверьте имя пользователя и путь к plist. Статус started подтверждает лишь то, что Homebrew сообщает об успешном запуске; он сам по себе не доказывает, что приложение приняло новые настройки или отвечает на запросы. Проверьте работоспособность приложения с помощью описанной в его документации проверки состояния (health check) или проконтролировав поведение, за которое отвечает измененный параметр.

Если служба не запускается, выполните команду вывода списка с флагом --debug и изучите собственный вывод ошибок или логи службы перед внесением дальнейших изменений. Проверьте синтаксис конфигурации приложения, права доступа к файлам и пути в соответствии с документацией этого приложения. Команда управления службами Homebrew запускает службу, используя её определение; она не валидирует специфические параметры конфигурации конкретного приложения. Не пытайтесь сразу редактировать сгенерированные файлы plist в качестве первого решения: задокументированный в Homebrew механизм настройки зависит от конкретного параметра, который вам требуется изменить.

Если изменение представляет собой переменную окружения

Если ваше изменение — это переменная окружения для службы, в Homebrew предусмотрен специальный файл окружения для каждой формулы. По умолчанию размещайте его по пути ~/.homebrew/services/formula.env; если задана переменная HOMEBREW_USER_CONFIG_HOME, то каталог будет $HOMEBREW_USER_CONFIG_HOME/services. Используйте одну запись вида KEY=value на строку, символ # в начале строки обозначает комментарий. Затем перезапустите службу; согласно документации Homebrew, эти значения вступают в силу при следующем перезапуске и сохраняются при обновлениях. См. инструкции по переменным окружения служб в руководстве Homebrew.

Например, задокументированный формат файла — KEY=value, но имя переменной и её значение должны соответствовать документации приложения. Не следует предполагать, что каждое приложение принимает произвольные переменные окружения, и не вставляйте секретные данные в файл окружения, не подумав о том, кто имеет к нему доступ для чтения. Если изменение конфигурации относится к конфигурационному файлу приложения, а не к переменной окружения, отредактируйте файл по пути, указанному этим приложением, а затем используйте ту же команду перезапуска.

Надежная последовательность действий такова: определите точную формулу и контекст службы, отредактируйте параметр в месте, указанном в документации приложения или Homebrew, перезапустите именно эту формулу и проверьте как статус в Homebrew, так и поведение самого приложения.

Источники