2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

zsh on MacOSでcompinitがエラーを吐く

Posted at

現象

zshにログインした時に、以下のようなエラー(警告?)が出る

zsh compinit: insecure files, run compaudit for list.
Ignore insecure files and continue [y] or abort compinit [n]?

原因

パーミッション周りが悪いらしい。
compinit は、セキュリティ上の問題から、補完に関連するファイルで所有者の違うものを見つけるとそれを読み込まないらしい。
そのあたりについてはググれば GitHub や StackOverflow のページがいくらでも見つかるだろう。

解決

zsh-users GitHub 上の issue につけられているコメント で分かる通り、権限と所有者を変更すればかんたんに解決する。Macの場合は以下のようになる。

  1. compaudit を実行すると、問題のあるディレクトリが表示される
  2. 表示された各ディレクトリに対して sudo chown -R root:staff target_directory を実行する
  3. 同様に sudo chmod -R 755 target_directory を実行する

または、以下のコマンドでも解決する場合があるらしい。

$ compaudit | xargs g-w

反応や別のページを見る限り、多くの場合はこれで解消するらしいのだが、私はこれだけでは解決しなかった。

compaudit で表示されたディレクトリを調べると、 /usr/local/share/zsh/site-functions/ 以下にあるファイルがシンボリックリンクになっており、 -R オプションによる再帰的な適用が効かなかったようである。

そのため、以下のようにして解決した。

for i in $(compaudit | xargs readlink -f)
do
    sudo chown root:staff $i
    sudo chmod 755 $i
done

※実際には手作業で行ったが、同等の効果が得られるはずである。

まとめ

compinit が権限周りで吐くエラーを解消した。

同じようにシンボリックリンクが問題を起こしている場合のページが軽く調べた中には見つからなかったため、記録として残しておく。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?