zsh-completionsのインストールに躓いた話
問題発生
作業環境を整えるのは基本。
なんか良さそうなリンクも来たし、Fishから乗り換えたのもあって色々と導入しようとしたらいきなり躓いた。
参考
とりあえずbrewで入れる。
するとこんなメッセージが出てきた。
==> Upgrading zsh-completions 0.33.0_1 -> 0.34.0 ==> Pouring zsh-completions--0.34.0.all.bottle.tar.gz ==> Caveats To activate these completions, add the following to your .zshrc: if type brew &>/dev/null; then FPATH=$(brew --prefix)/share/zsh-completions:$FPATH autoload -Uz compinit compinit fi You may also need to force rebuild `zcompdump`: rm -f ~/.zcompdump; compinit Additionally, if you receive "zsh compinit: insecure directories" warnings when attempting to load these completions, you may need to run this: chmod -R go-w '/usr/local/share/zsh'
メッセージ自体は参考リンクのと同じだけど、自分のMacはIntelなのでそれを加味して設定を変更。
chmod -R go-w '/usr/local/share/zsh'
ただそれでもWarningが消えない。
❯ source ~/.zshrc zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]? y
とりあえずGPTに聞いてみる。
解決
Q1
以下のエラーを解決したい
zsh compinit: insecure directories, run compaudit for list. Ignore insecure directories and continue [y] or abort compinit [n]?
A1
このエラーは、Zshの補完システムが不安全なディレクトリ権限に関連していることを示しています。解決するには、次の手順を実行してください。
エラーメッセージに従って
compaudit
を実行し、不安全なディレクトリのリストを取得します。compaudit
compaudit
が出力したディレクトリのパーミッションを修正します。次のコマンドは、ディレクトリの所有者とグループを現在のユーザーに変更し、パーミッションを755に設定します。sudo chown -R $(whoami) <ディレクトリ名> sudo chmod -R 755 <ディレクトリ名>
<ディレクトリ名>
はcompaudit
の出力から取得したディレクトリ名に置き換えてください。もし複数のディレクトリがある場合は、上記の手順を繰り返し実行して、すべてのディレクトリのパーミッションを修正します。
- 修正が完了したら、新しいターミナルウィンドウを開いて、エラーが解消されたことを確認します。
Q2
sudoってあんま使っちゃいけないと思うんだ。あとwhoamiって何。
A2
sudo
は、一時的に管理者(ルート)権限でコマンドを実行するためのコマンドです。確かに、sudo
はシステム全体に影響を与える可能性があるため、慎重に使用する必要があります。ただし、上記の手順では、特定のディレクトリの所有者とパーミッションを変更するだけであり、通常は問題が発生しないはずです。
whoami
は、現在ログインしているユーザー名を表示するコマンドです。このコマンドは、sudo chown
コマンドでディレクトリの所有者を現在のユーザーに変更するために使用されます。$(whoami)
は、コマンドの結果(ユーザー名)を直接コマンドラインに挿入します。
❯ echo $(whoami)
yamadatakatoshi
なるほどね。
Q3
そもそもcompauditってなに
A3
compaudit
は、zshシェルの補完システムで使用されるディレクトリとファイルのセキュリティチェックを行うコマンドです。このコマンドは、不正なアクセス権限や所有権が設定されているディレクトリやファイルを検出し、それらが悪意のあるコードによって改ざんされていないか確認するために使用されます。
compaudit
がエラーを検出すると、zshの補完機能(compinit
)が警告メッセージを表示し、補完を続行するか中止するかを選択できます。このような問題が発生した場合、compaudit
の結果を使用して、不適切なアクセス権限や所有権を持つディレクトリやファイルを修正することが推奨されます。
それを加味して実践
❯ compaudit There are insecure directories: /usr/local/share ❯ sudo chown -R $(whoami) /usr/local/share Password: yamadatakatoshi😎 ~/Workspace/ReadingNotes/algorithms_explained_and_illustrated on 🌱main x86_64took 4s ❯ sudo chmod -R 755 /usr/local/share
compauditの設定がzshじゃなくてその1つ上のshareディレクトリだったからか〜なるほど。
❯ source ~/.zshrc
無事に解決。