npm install not installing things at /usr/bin
node.js, sails.js, ubuntu, ubuntu-13.04, waterline
Solution
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`.
In a default installation, `prefix` is either `/usr` or `/usr/local` on Unix platforms (`%APPDATA%/npm` on Windows).
If `{prefix}/bin` is not in your `$PATH`, you won't be able to execute such CLIs just by name.
To see the current `prefix` value in effect, run:
npm get prefix
Your options are:
Add `/home/brunoluiz/npm/bin` to your `$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
Note, however, that you'd then have to reinstall your global packages for the symlinks to be created in the new `{prefix}\bin` location.
Problem
I am trying to install SailsJS with: ``` $ sudo npm install -g 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) ``` 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? The same is happening with Karma module. 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).