経緯
asdfをインストールする際、うっかり sudo
を使ってしまいました。
.bashrcにPATHを通した後、その場では特にエラーもなく進んだのですが、後々プラグイン追加時に以下のようなエラーが出て気づきました。
エラーメッセージ
$ sudo asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
sudo: asdf: command not found
$ asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
mkdir: cannot create directory ‘/home/ユーザ名/.asdf/plugins’: Permission denied
fatal: could not create leading directories of '/home/ユーザ名/.asdf/plugins/nodejs': Permission denied
原因
sudoでasdfをインストールしたため、.asdfディレクトリ以下の所有者が root になっていました。asdfは一般ユーザの環境でコントロールすべきツールなので、本来 sudo は不要です。
ちなみに…
$sudo asdf
$asdf
が両方とも機能したのは、間違って作った.asdf/のパーミッションが-rwxr-xr-x
でその他グループにもx
があるからでした。
ただプラグインとなると、rootが所有者なので一般ユーザでは書き込み(ディレクトリ作成)できず失敗。
またsudoコマンドは効かないのは、PATHを通した.bashrcは一般ユーザで通したから。
解決方法
所有グループ, 所有者を自分のユーザに変更してあげればOK
$sudo chgrp -R $(whoami) ../.asdf
$sudo chown -R $(whoami) ../.asdf
感想
- 作業は丁寧に。開発環境のセットアップ時は、つい sudo で強引に進めてしまいがちですが、後々のトラブルの元になるので要注意でした(自戒)