Macでsudo npmなのにpermission deniedのエラーが出現した
はじめに
気づけば初仕事に入ってもはや2ヶ月。
当初に遭った問題を覚えているうちに書きたいと思います。
Windows民がiMacを配られた初日まずは環境構築でした…
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ユーザーに戻せば大丈夫なはず!」という安易な思考から、
自らすべての権限を奪い、キーボードやブラウザの使用権限さえなくなりました。
初期化せざるを得ない状況を作り出したのだ…あれもはやホラーです…
これは、絶対、やっちゃいけません。
解決策
https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
に書いてありました。
ホームディレクトリに新しいディレクトリを作成(元のディレクトリの代わりに使います)
mkdir ~/.npm-global
新しいディレクトリを設定
npm config set prefix '~/.npm-global'
文字エディターを開いて、ファイルを新規作成し、以下の行を追加
export PATH=~/.npm-global/bin:$PATH
保存する。名前は.profileで保存先はホームディレクトリ
(隠しファイルなので保存してもFinderでは見えません)再びcmdに戻って、sourceコマンドで作成したファイルを反映させる
source ~/.profile
これでnpm install -g
をそのまま使えるようになりました!
解決策追記(2019/12/05)
上記の文字エディターの部分はviを使うことも可能です。
そうすると全てがターミナルに完結できて、その方が使いやすいと思う方もいらっしゃるではないかと。
具体的に言うと、上記の3.
と4.
の代わりに以下の手順を使います。
viを使い新規ファイル~/.profileを作成する
vi ~/.profile
iキーを押し、編集モードにして、1行目に追加
export PATH=~/.npm-global/bin:$PATH
Escキーで編集モードを終了させ、
:wq
で保存して戻る
そうするとわざわざ文字エディターを開かなくても大丈夫です!
と言いながら、半年前の自分は
「コマンドですって!?!?(((((( ;゚Д゚)))))ガクガク」
の状態だったので、文字エディターを使った方が気が楽だったで、
そう記述しました。
今になったらこそ、全部ターミナルで完結した方が楽じゃない?と言えるけど、
これでも成長ですかね?(笑)
おまけ
これで解決できましたが、cmdを開くたびにsource ~/.profile
を打たないと反映されませんでした。
毎回だとめんどくさいので、それについても調べました。
どうやら~/.bash_profileというログイン時実行される設定ファイルが存在しています。
なので、それを編集して無事~/.profileの内容が自動的に反映されるようになりました!
cmdで~/.bash_profileを呼び出す
vi ~/.bash_profile
iキーを押すとで編集モードになり、最後の行に追加
source ~/.profile
Escキーで編集モードを終了させ、
:wq
で保存して戻る
さいごに
コマンドプロンプトを使い慣れた方には簡単なことかもしれませんが、
自分は結構苦戦したので、
こんな風にまとめて、一人でも苦戦している方の悩みを解決できたら幸いです。
Author And Source
この問題について(Macでsudo npmなのにpermission deniedのエラーが出現した), 我々は、より多くの情報をここで見つけました https://qiita.com/aotoriii/items/dbd54297677c63c27c24著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .