初めてQiitaに投稿してみます。ドキドキ。。。
remark-lintをインストールするために初めてnpmを使ったのですが、環境構築時にすごくハマったのでメモ。
Mac内に/usr/local/bin/npm
コマンドが見つかったので、なんかのタイミングでHomebrewで入れたんだったかなーと思い、とりあえずnpm install
をしてみました。
するとこんなエラー。
~ % npm install --save remark-cli remark-lint remark-preset-lint-recommended
npm ERR! Error: EACCES, open '/Users/$USER/.npm/aeb23529-remark-cli.lock'
npm ERR! { [Error: EACCES, open '/Users/$USER/.npm/aeb23529-remark-cli.lock']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/Users/$USER/.npm/aeb23529-remark-cli.lock' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Darwin 15.6.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "--save" "remark-cli" "remark-lint" "remark-preset-lint-recommended"
npm ERR! cwd /Users/$USER
npm ERR! node -v v0.8.22
npm ERR! npm -v 1.2.14
npm ERR! path /Users/$USER/.npm/aeb23529-remark-cli.lock
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/$USER/.npm/aeb23529-remark-cli.lock'
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Users/$USER/npm-debug.log
npm ERR! not ok code 0
エラーの直接の原因は、~/.npm ディレクトリのオーナーがrootだったからでした。
% ls -ld .npm
drwxr-xr-x 46 root staff 1564 Apr 18 2013 .npm
ディレクトリをchownすれば動いたのかもしれませんが、もう少し考えてみる。
パスが/usr/local/bin/npm
だと普通はHomebrewで入ったコマンド。でもbrewパッケージ関連のディレクトリがroot権限って変です。brew list
で確認してもパッケージ入ってないし、自分でインストールした記憶もない。
ということでlsで確認してみる。
brewで入れたコマンドは以下のようにCellar
配下へのリンクになるもんだけど、
~ % ls -l /usr/local/bin/git
lrwxr-xr-x 1 $USER admin 28 Jan 5 14:22 /usr/local/bin/git -> ../Cellar/git/2.11.0/bin/git
nodeやnpmはCellarを見てないので、やっぱHomebrewではない!
~ % ls -l /usr/local/bin/node
-rwxr-xr-x 1 24561 wheel 18947216 Mar 7 2013 /usr/local/bin/node
~ % ls -l /usr/local/bin/npm
lrwxr-xr-x 1 root wheel 38 Apr 18 2013 /usr/local/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js
リンク先のnode_modules
とやらを確認してみると、
~ % ls -l /usr/local/lib/node_modules
total 0
drwxr-xr-x 20 nobody staff 680 Mar 29 2015 alloy
drwxr-xr-x 18 24561 staff 612 Mar 29 2015 npm
drwxr-xr-x 12 nobody staff 408 Mar 29 2015 titanium
うぉ〜〜Titaniumからの自動インストールかぁ!!!前職で一時期TitaniumでiPhoneアプリ作ってたんですが、タイムスタンプもその時期だし間違いない。まともなアプリ作れないのでTitanium本体はすぐ削除したのですが、こんなタイミングでハマるとはすごい凹む。。。トロイのチタン馬。。。
調べてみると、同じような環境をきれいにした方がいたので、アンインストールまではすぐできました。
nodebrew で Mac の Node.js 環境をスッキリさせた
しかしこの後、Homebrewからnodebrewをインストールしようとして別途ハマるのですが、また別記事で書きまーす。