launchctl で Load failed: 5: Input/Output error が出る

きっと macOS Big Sur からだと思うんだけど、そもそも今回このエラーが出た MacBook Air(これまでタイプしないから気づかなかったけど、いざタイプする際にどれが大文字で半角スペースは入るのかどうなのかとか悩むところを、実機でだったら液晶の下を見れば書いてあるのでわかりやすい!)は Big Sur の出来損ないがプリインストールされていたんで、そのときにも同じエラーが出るはずだったのに出なかったのはバージョンが 11.1 だからでこのバージョンから発生するのかと調べてみるにどうも 11.0.1 から出ていたとのことで、よくわからんちん。

ともあれ、Calalina 以前ではこういうのは出なかった。 っていうかなんだよ Input/Output error って。 いよいよわからないぞ。 っていうくらいなので多少酔っ払い始めていた頭で整理のつくはずもなく、その日(昨夜)は寝てしまったんですけども、今朝起きて閃いたのは、launchctl (launchd) でだいたいが出るエラーは所有権とパーミッションだよねってことでひとしきり試してみたらロードできました。

hoge@hogemac ~ % launchctl load -w ~/Library/LaunchAgents/hogehoge.plist
Load failed: 5: Input/Output error

ターミナルでこんなような悲惨なことになるかと思います。 そしたら ls -la で調べてみますってぇと

・ファイルの所有権が自分自身ではない
・パーミッションが644ではない

こんなことだろうと思いますので、前者は chown で、後者は chmod で修正しますです。 LaunchAgents ディレクトリに入れたのがシンボリックリンクであれば、元ファイルに対して修正をかけるんだぞ?(←私がそうだった)

なんということはない、エラー表示が変わっただけみたいなんですよね。 それにしてもわかりづらいねぇ。

追記:plist の書式誤りでも同様のエラーを出力するようです。

20230209追記:最近の launchctl は load なり unload なりすると、「load (unload) オプション付きでしましたよ」って返してくる。 よくよく読まないでいるとエラーなのかと勘違いするので、注意が必要になりました。