41
npm http 200 https://registry.npmjs.org/weak/-/weak-0.2.2.tgz
npm http GET https://registry.npmjs.org/bindings
npm http 304 https://registry.npmjs.org/bindings

> weak@0.2.2 install node_modules/weak
> node-gyp rebuild

Traceback (most recent call last):
  File "/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py", line 18, in <module>
    sys.exit(gyp.script_main())
AttributeError: 'module' object has no attribute 'script_main'
gyp ERR! configure error 
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:337:16)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:789:12)
gyp ERR! System Linux 3.11.0-15-generic
gyp ERR! command "node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"

gyp ERR! node -v v0.10.15
gyp ERR! node-gyp -v v0.12.1
gyp ERR! not ok 
npm ERR! weak@0.2.2 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the weak@0.2.2 install script.
npm ERR! This is most likely a problem with the weak package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls weak
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.11.0-15-generic
npm ERR! command "node" "/usr/bin/npm" "install" "weak@0.2.2"
npm ERR! node -v v0.10.15
npm ERR! npm -v 1.3.23
npm ERR! code ELIFECYCLE

npm ERR! not ok code 0

I don't have a direct dependency on weak or node-gyp but I guess it is required by my other dependencies (express,phantom,ejs,aws-sdk,moment). Anyone faced such an issue and was able to fix?

Artjom B.
  • 61,146
  • 24
  • 125
  • 222
Pratik Mandrekar
  • 9,362
  • 4
  • 45
  • 65

13 Answers13

35

If your python version isn't the source of error, check if you have "gyp" installed. This is conflicting with the gyp version in node-gyp.

apt-get remove gyp

https://github.com/TooTallNate/node-gyp/issues/363#issuecomment-32234646

pscheit
  • 2,882
  • 27
  • 29
  • 4
    Should be an accepted answer. Downgrading to 2.6 and using PPA is the last resort. – Yauhen Yakimovich Jul 15 '14 at 14:05
  • I'm having this error when running `npm install`. the `gip` package is a dependency of `npm`, so removing it doesn not solve the issue for me as it removes `npm` as well... I'm on Ubuntu 14.04. – pieroxy Nov 30 '14 at 18:59
  • 1
    For those with similar problems, this resolves the following error for me on Ubuntu. "error: no such option: --no-parallel" – Róisín Grannell May 05 '15 at 01:56
34

This command sudo apt-get install build-essential helped in my case.

Yann Dìnendal
  • 1,422
  • 2
  • 17
  • 27
xpepermint
  • 35,055
  • 30
  • 109
  • 163
24

This is what worked. You need python 2.6 during the installation.

#!/bin/bash
#On Ubuntu Saucy:
sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get update
sudo apt-get install python2.6
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.6 20
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 10

#you can switch between 2.6 & 2.7 using:
sudo update-alternatives --config python

#Btw I installed node using ppa:chris-lea/node.js

https://github.com/TooTallNate/node-gyp/issues/363

Logan
  • 10,649
  • 13
  • 41
  • 54
Pratik Mandrekar
  • 9,362
  • 4
  • 45
  • 65
  • What does exactly `sudo update-alternatives --config python` ? it switch from 2.6 => 2.7 => 2.6 => 2.7 ... ? and how to know which python are we currently using ? – Hugolpz Apr 14 '14 at 08:12
  • you can evaluate every command line tool to its version by using `which $(readlink -f \`which python\`)` – test30 May 06 '14 at 16:38
  • You can figure out the python version in use with the command `python --version` – Pratik Mandrekar May 07 '14 at 07:00
21

FWIW, I had a similar problem trying to install Protractor on Ubuntu 14.04 (DigitalOcean). Reinstalling node-gyp fixed the it:

apt-get install node-gyp
Brine
  • 3,733
  • 1
  • 21
  • 38
10

on Ubuntu 18, I had to install required build libs to get it working

sudo apt-get install build-essential
Bheru Lal Lohar
  • 880
  • 9
  • 17
  • On a fresh Ubuntu 20 installation I had to run `sudo apt update` before installing `build-essential`. – Erwol Feb 01 '21 at 10:53
7

Here are the steps to install node-gyp successfully on a Ubuntu system:

1.First of all, install the "make" build tool in Ubuntu with the following commands:

sudo apt-get update && \
sudo apt-get install build-essential software-properties-common -y;

2. Then you need to install the a proper C/C++ compiler toolchain. We will be installing GCC here with the following commands:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && \
sudo apt-get update && \
sudo apt-get install gcc-snapshot -y && \
sudo apt-get update && \
sudo apt-get install gcc-6 g++-6 -y && \
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 60 --slave 
/usr/bin/g++ g++ /usr/bin/g++-6 && \
sudo apt-get install gcc-4.8 g++-4.8 -y && \
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave 
/usr/bin/g++ g++ /usr/bin/g++-4.8;

3. Install python 2.7 version. (Note: Python 3 is not supported by node-gyp).

sudo apt update
sudo apt upgrade
sudo apt install python2.7 python-pip

4. And finally install, node-gyp npm package:

npm install -g node-gyp

Additional but not important: If you have any atom keyboard-layout related issue with node-gyp then install the following one more package:

sudo apt-get install libxkbfile-dev

Thats all! It should be working fine now.

Manish Jangir
  • 5,329
  • 4
  • 42
  • 75
4

I faced this issue on Ubuntu 16.04 while trying to install the wikimedia extension mathoid.

I tried everything that was suggested and nothing worked until I did:

sudo apt-get install librsvg2-2 librsvg2-dev
joshuar
  • 187
  • 2
  • 10
2

On Ubuntu 10.04, Installing libicu solved my problem.

sudo apt-get install libicu-dev

Sagar Ranglani
  • 5,491
  • 4
  • 34
  • 47
1

On Fedora 20, reinstalling gyp fixed this for me.

sudo yum reinstall gyp
mwcz
  • 8,949
  • 10
  • 42
  • 63
1

I already had build-essential installed. I just had to run:

sudo apt install python
user3413723
  • 11,147
  • 6
  • 55
  • 64
0

In my-case it was failing on Linux-mint 19.2, for some reasons on run-time gcc++ was not accessible. So by installing the build-essentials error was resolved. PS:

build-essential package is a reference for all the packages needed to compile a Debian packages. It generally includes the GCC/g++ compilers and libraries and some other utilities. Informational for list of build-essential packages can be found on build-essentials

just-be-weird
  • 1,242
  • 9
  • 7
0

If the error is due to " fatal error: dns_sd.h: No such file or directory 32 | #include <dns_sd.h> ", solve it by

" sudo apt-get install libavahi-compat-libdnssd-dev " , else if it is due to python2 follow @Manish Jangir method

0

Fedora Silverblue

rpm-ostree install make automake gcc gcc-c++
Anderson Laverde
  • 316
  • 1
  • 4
  • 15