3

今日の午後、Fedora 16 に Node.js をインストールしました。

user@$ sudo yum localinstall --nogpgcheck http://nodejs.tchol.org/repocfg/fedora/nodejs-stable-release.noarch.rpm

user@$ sudo yum install nodejs-compat-symlinks npm

次に、npmでパッケージをインストールしました。Fedora で npm を使用してインストールしたすべてのパッケージ (これは初めてではありません) には、次のようなプロセスが含まれていました。読んで泣く。明らかに、これはハック的で間違っていますが、より少ないまたは他の npm パッケージをインストールすることにした場合、同じ手順を実行する必要があります。なんで?私の環境やアプローチのどこが壊れていますか?

user@$ sudo npm install -g jslint
[... this works ... kind of]

user@$ jslint
bash: jslint: command not found

user@$ sudo su

root@$ jslint
No files specified.
Usage: /bin/jslint ... [works]

root@$ which jslint
/bin/jslint

root@$ ls -l jslint
lrwxrwxrwx. 1 root root 38 Jul 15 14:58 /bin/jslint -> /lib/node_modules/jslint/bin/jslint.js

root@$ cd /lib/node_modules; ls -l
...
drwxr-xr-x. 2 root   root     4096 Jul 15 14:22 inherits
drwxr-xr-x. 2 root   root     4096 Jul 15 14:22 ini
drwx------. 6 nobody usergroup 4096 Jul 15 14:58 jshint
drwxr-xr-x. 3 root   root     4096 Jul 15 14:22 lru-cache
...

root@$ find . -type d -print0 | xargs -0 chmod 755

root@$ ls -l
...
drwxr-xr-x. 2 root   root     4096 Jul 15 14:22 inherits
drwxr-xr-x. 2 root   root     4096 Jul 15 14:22 ini
drwxr-xr-x. 5 nobody usergroup 4096 Jul 15 15:32 jslint
drwxr-xr-x. 3 root   root     4096 Jul 15 14:22 lru-cache
...

root@$ su user

user@$ jslint
o files specified.
Usage: /bin/jslint [now it finally works]
4

1 に答える 1

3

最近のバージョンの npm は、sudo 権限で実行されている場合、セキュリティ対策としてユーザー「nobody」に切り替わります。sudo を使用するのではなく、root としてログインしてグローバル インストールを実行してみてください。

于 2012-07-18T02:13:52.503 に答える