`brew services` is supported only on macOS or Linux へ対応する
パスの解決をする
Invalid usage: brew services
is supported only on macOS or Linuxの解決を参考に以下のエイリアスに修正した。
$ alias brew="PATH=/opt/homebrew/bin brew"
↓
alias brew="env PATH=${PATH/\/Users\/${USER}\/\.anyenv\/envs\/pyenv\/shims:/} brew"
Brew servicesコマンドで問題が発生した
Homebrew経由でインストールしたApacheを起動するために以下のコマンドを実行した。
# httpd サービスの起動
$ brew services start httpd
すると以下のエラーが発生。
Usage: brew services [subcommand]
Manage background services with macOS' launchctl(1) daemon manager.
If sudo is passed, operate on /Library/LaunchDaemons (started at boot).
Otherwise, operate on ~/Library/LaunchAgents (started at login).
[sudo] brew services [list] (--json):
List information about all managed services for the current user (or root).
[sudo] brew services info (formula|--all|--json):
List all managed services for the current user (or root).
[sudo] brew services run (formula|--all):
Run the service formula without registering to launch at login (or boot).
[sudo] brew services start (formula|--all):
Start the service formula immediately and register it to launch at login
(or boot).
[sudo] brew services stop (formula|--all):
Stop the service formula immediately and unregister it from launching at
login (or boot).
[sudo] brew services kill (formula|--all):
Stop the service formula immediately but keep it registered to launch at
login (or boot).
[sudo] brew services restart (formula|--all):
Stop (if necessary) and start the service formula immediately and register
it to launch at login (or boot).
[sudo] brew services cleanup:
Remove all unused services.
--file Use the plist file from this location to
start or run the service.
--all Run subcommand on all services.
--json Output as JSON.
-d, --debug Display any debugging information.
-q, --quiet Make some output more quiet.
-v, --verbose Make some output more verbose.
-h, --help Show this message.
Error: Invalid usage: `brew services` is supported only on macOS or Linux (with systemd)!
Sudoをつけろと怒られてしまった。上の実行結果はmacOSで実行した際のものだが、最後の行にはmacOSかLinuxでのみサポートされるといった内容が出力されている。launchctlが見つからないらしい。
この局面でsudo
を先頭につけて実行することで実行自体は可能である。
しかし...
今まではこのエラーに出会うたびにsudo
してごまかして実行していたが、brew bundle dump
するさいにも同様のエラーが発生するようになり解決しようと踏み切った。
解決策を探す
Googleで検索したところZennの記事として書いてくださっている方がいた。
記事の中で自分のスクラップが出てきたことにも驚いたが何より、以前書いた以下のスクラップの設定だとパスの指定に誤りがあることが発覚した。
【該当スクラップ】
何が問題だったか
上記スクラップではpyenvのパス問題に対して以下のようにしていた。
$ alias brew="PATH=/opt/homebrew/bin brew"
これだと/bin/launchctlを見に行かなくなるため自ずとエラーになってしまうとのこと。
確かにパスを/opt/homebrew/binと明示的に指定してしまっていた。
今まで使っていた際には上記のエイリアス指定で動いている場面が多かったため、パスに対して影響が出る可能性がゼロではないということを完全に見落としていたようである。
brew doctor してみる
以前ハマったbrew doctor
を実行する。
$ brew doctor
Your system is ready to brew.
安心のYour system is ready to brew.
を確認できた。