npm install 不在/usr/bin 安装东西 [英] npm install not installing things at /usr/bin

查看:76
本文介绍了npm install 不在/usr/bin 安装东西的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试安装 SailsJS:

I am trying to install SailsJS with:

$ sudo npm install -g sails

它可以工作,使用以下日志在/home/brunoluiz/npm/lib/node_modules/sails 安装所有内容:

It works, install everything at /home/brunoluiz/npm/lib/node_modules/sails with the following log:

/home/brunoluiz/npm/bin/sails -> /home/brunoluiz/npm/lib/node_modules/sails/bin/sails.js
sails@0.9.16 /home/brunoluiz/npm/lib/node_modules/sails
├── connect-flash@0.1.1
├── pluralize@0.0.5
├── inflection@1.2.5
├── grunt-sails-linker@0.9.5
├── grunt-contrib-clean@0.4.1
├── node-uuid@1.4.0
├── async@0.2.9
├── grunt-contrib-concat@0.3.0
├── grunt-contrib-copy@0.4.1
├── grunt-contrib-coffee@0.7.0
├── ejs-locals@1.0.2
├── ejs@0.8.4
├── underscore.string@2.3.0
├── coffee-script@1.6.2
├── lodash@2.4.1
├── i18n@0.4.1 (debug@0.8.0, sprintf@0.1.3)
├── optimist@0.3.4 (wordwrap@0.0.2)
├── include-all@0.1.2 (underscore.string@2.3.1)
├── sails-disk@0.9.3 (waterline-criteria@0.9.7, lodash@2.3.0, fs-extra@0.8.1)
├── fs-extra@0.5.0 (jsonfile@0.0.1, ncp@0.2.7, mkdirp@0.3.5, rimraf@2.1.4)
├── connect-redis@1.4.5 (debug@0.8.0, redis@0.7.3)
├── grunt-contrib-jst@0.5.0 (lodash@1.0.1, grunt-lib-contrib@0.5.3)
├── glob@3.1.14 (inherits@1.0.0, graceful-fs@1.1.14, minimatch@0.2.14)
├── grunt-contrib-cssmin@0.6.1 (grunt-lib-contrib@0.6.1, clean-css@1.0.12)
├── grunt-cli@0.1.9 (resolve@0.3.1, nopt@1.0.10, findup-sync@0.1.3)
├── grunt-contrib-watch@0.4.4 (gaze@0.3.4, tiny-lr@0.0.4)
├── connect-mongo@0.3.2 (mongodb@1.2.14)
├── grunt-contrib-uglify@0.2.2 (grunt-lib-contrib@0.6.1, uglify-js@2.3.6)
├── waterline@0.9.16 (underscore@1.5.2, q@0.9.7, anchor@0.9.12)
├── grunt@0.4.1 (which@1.0.5, dateformat@1.0.2-1.2.3, eventemitter2@0.4.13, colors@0.6.2, hooker@0.2.3, async@0.1.22, nopt@1.0.10, minimatch@0.2.14, lodash@0.9.2, rimraf@2.0.3, coffee-script@1.3.3, underscore.string@2.2.1, iconv-lite@0.2.11, glob@3.1.21, findup-sync@0.1.3, js-yaml@2.0.5)
├── winston@0.7.1 (cycle@1.0.3, stack-trace@0.0.9, eyes@0.1.8, colors@0.6.2, pkginfo@0.3.0, request@2.16.6)
├── express@3.4.0 (methods@0.0.1, debug@0.8.0, range-parser@0.0.4, cookie-signature@1.0.1, fresh@0.2.0, buffer-crc32@0.2.1, cookie@0.1.0, mkdirp@0.3.5, commander@1.2.0, send@0.1.4, connect@2.9.0)
├── grunt-contrib-less@0.9.0 (grunt-lib-contrib@0.6.1, chalk@0.4.0, less@1.6.3)
└── socket.io@0.9.14 (base64id@0.1.0, policyfile@0.0.4, redis@0.7.3, socket.io-client@0.9.11)

问题是当您尝试使用sails 时:例如,您运行sails new project,但它没有找到sails.稍微调查一下,我发现 npm 没有在/usr/bin 安装模块.有什么原因吗?一些配置?

The problem is when you try to use sails: you run sails new project, for example, and it doesn't find sails. Investigating a little bit, I discovered npm is not installing the modules at /usr/bin. Is there some reason for that? Some config?

Karma 模块也是如此.

The same is happening with Karma module.

我使用了 ppa 中的 nodejs,为 node 创建了符号链接,并从官方 install.sh 脚本(https://www.npmjs.org/install.sh).

I used the nodejs from ppa, created the symbolic link for node and installed npm from the official install.sh script (https://www.npmjs.org/install.sh).

推荐答案

听起来您的 npm 安装配置为使用 /home/brunoluiz/npm 作为 >prefix,这意味着它将在 {prefix}/bin 中放置指向全局安装包附带的 CLI 的符号链接.

It sounds like your npm installation is configured to use /home/brunoluiz/npm as prefix, meaning that it will place symlinks to the CLIs that come with globally installed packages in {prefix}/bin.

在默认安装中,prefix 在 Unix 平台上是 /usr/usr/local (%APPDATA%/npm 在 Windows 上).

In a default installation, prefix is either /usr or /usr/local on Unix platforms (%APPDATA%/npm on Windows).

如果 {prefix}/bin 不在您的 $PATH 中,您将无法仅通过名称执行此类 CLI.

If {prefix}/bin is not in your $PATH, you won't be able to execute such CLIs just by name.

要查看当前有效的 prefix 值,请运行:

To see the current prefix value in effect, run:

npm get prefix

您的选择是:

  • /home/brunoluiz/npm/bin 添加到您的 $PATH

prefix配置项的值改为bin子文件夹已经在你的$PATH中的文件夹;例如:

Change the value of the prefix configuration item to a folder whose bin subfolder is already in your $PATH; e.g.:

    npm set prefix /usr       # Ubuntu; CLI symlinks are placed in /usr/bin
    npm set prefix /usr/local # OSX; CLIs symlinks are placed in /usr/local/bin

但是请注意,您必须重新安装全局包,以便在新的 {prefix}\bin 位置创建符号链接.

Note, however, that you'd then have to reinstall your global packages for the symlinks to be created in the new {prefix}\bin location.

这篇关于npm install 不在/usr/bin 安装东西的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆