5
3

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 1 year has passed since last update.

Macでsudo npmなのにpermission deniedのエラーが出現した

Last updated at Posted at 2019-07-27

内容の最新更新日は2019/12/05です。

はじめに

気づけば初めてプロジェクト配属されて早2ヶ月。
当初遭った問題を覚えているうちに書いておこうと思います。
最初にすることは配られたiMacの環境構築だが、
Windowsに一筋十数年、Macの使い方やキーボードの配置すらあやふやな中で進み、とりあえず壁をぶつかりまくりました…
まずsudoって管理者権限なのに権限がないってどういうことだよ!!(怒)

試したこと(失敗)

時間のない人はここを飛ばして解決策を見てください。

sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

色々調べてたどり着いたのはこれ。
ざっくり言うとディレクトリの管理者を自分のアカウントに変更してくれます。
これでsudoがなくても普通にインストールできちゃいます。(むしろsudoを使ったらエラーが出ます)
しかし後ほどいろんな問題が浮かび上がりました…
一番大きかったのはiTunesのリソースを割り当てることができませんでしたエラー。
個人の推測ですが、権限が変わった影響でディレクトリを見つからない、もしくは書き込みできなくなったのではないかと。
このエラーのなにがいけないっていうと、
iPhoneから信頼できないため、実機テストができないのです!!
こうなったらインストールできても意味がないじゃん(涙)

これからは自分のアホ体験談です。
つまらない話なので時間のない方飛ばしてくださいね(二回目)
「sudo chownはだめだったので、元に戻したい!」と思ってとった行動は…
sudo chown -R root $(npm config get prefix)/{lib/node_modules,bin,share}
(実際のコマンドを忘れたがこんな感じ)
「再び権限をrootユーザーに戻せば大丈夫なはず!」という安易な思考から、
自らすべての権限を奪い、キーボードやブラウザの使用権限さえなくなりました。
初期化せざるを得ない状況を作り出したのだ…もはやホラー…
これは、絶対、やっちゃいけない。

解決策

にありました。

  1. (CLI)ホームディレクトリに新しいディレクトリを作成(元のディレクトリの代わりに利用)
    mkdir ~/.npm-global

  2. (CLI)新しいディレクトリを設定
    npm config set prefix '~/.npm-global'

  3. (GUI)文字エディターを開いて、ファイルを新規作成し、以下の行を追加
    export PATH=~/.npm-global/bin:$PATH

  4. (GUI)保存する。名前は .profile で保存先はホームディレクトリ
    (隠しファイルなので保存してもFinderでは見えない)

  5. (CLI)sourceコマンドで作成したファイルを反映させる
    source ~/.profile

これでnpm install -gをそのまま使えるようになりました!

解決策追記(2019/12/05)

上記の文字エディターの部分はviコマンドで代替できます。
全ての手順がターミナルで完結できて、人によってはその方はやりやすいかもしれません。
上記の(GUI)の部分を置き換えた手順は下記です。

  1. (CLI)ホームディレクトリに新しいディレクトリを作成(元のディレクトリの代わりに利用)
    mkdir ~/.npm-global

  2. (CLI)新しいディレクトリを設定
    npm config set prefix '~/.npm-global'

  3. (CLI)新規ファイル~/.profileを作成する
    vi ~/.profile

  4. (CLI)iキーを押して編集モードにする

  5. (CLI)1行目に追加
    export PATH=~/.npm-global/bin:$PATH

  6. (CLI)Escキーで編集モードを終了させる

  7. (CLI):wqを入力して、エンターキーで保存して戻る

  8. (CLI)sourceコマンドで作成したファイルを反映させる
    source ~/.profile

そうするとわざわざ文字エディターを開かなくても大丈夫です!
と言いながら、半年前の自分は
「コマンドですって!?!?(((((( ;゚Д゚)))))ガクガク」
の状態でした。
文字エディターを使った方が気が楽だと、そのように記事にしました。
今となってはターミナルで完結した方が楽じゃない?と言えるけど、
これでも成長ですかね?(笑)

おまけ

これで解決できましたが、cmdを開くたびにsource ~/.profileを打たないと反映されません。
毎回だとめんどくさいので、それについても調べました。
どうやら ~/.bash_profile というログイン時に実行される設定ファイルが存在しています。
なので、それを編集して無事~/.profileの内容が自動的に反映されるようになりました!

  1. (CLI)~/.bash_profileを開く
    vi ~/.bash_profile

  2. (CLI)iキーを押して編集モードにする

  3. (CLI)最後の行に追加
    source ~/.profile

  4. (CLI)Escキーで編集モードを終了させる

  5. (CLI):wqを入力して、エンターキーで保存して戻る

さいごに

CLIを使い慣れた方には簡単かもしれませんが、自分は結構苦戦しました。
こんな風にまとめて、一人でも苦戦している方の悩みを解決できたら幸いです。

5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?