Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I installed the nodejs package on Fedora 16 this way:

# yum install nodejs

But it crashed on startup when run with no arguments:

$ nodejs
nodejs: ../src/handle_wrap.cc:65: static v8::Handle<v8::Value> 
    node::HandleWrap::Unref(const v8::Arguments&): Assertion 
    `args.Holder()->InternalFieldCount() > 0' failed.
Aborted (core dumped)

And also with an empty file:

$ nodejs /dev/null
nodejs: symbol lookup error: nodejs: undefined symbol: 
    _ZN2v82V837AdjustAmountOfExternalAllocatedMemoryEi

How can I install Node.js on Fedora using yum and not have it crash when it starts?

share|improve this question

5 Answers 5

If you are getting the error stated above, stop, and do the following:

$ sudo yum -y remove v8
$ sudo yum localinstall --nogpgcheck http://nodejs.tchol.org/repocfg/fedora/nodejs-stable-release.noarch.rpm # You probably already have this repo installed, may be skipped.

# Next line will reinstall older version of V8 and working NPM -
$ sudo yum --disablerepo=* --enablerepo=nodejs-stable install nodejs-compat-symlinks npm
share|improve this answer
    
This answer looks to be the same as what ftrotter posted a while ago. –  John Zwinck Nov 11 '12 at 18:48

Both answers given are not complete solutions: as soon as you execute yum update or yum upgrade v8 will be upgraded again. The complete solution is as followed:

First remove v8 and add the nodejs-stable repository to yum, just like ftrotter said:

$ sudo yum -y remove v8
$ sudo yum localinstall --nogpgcheck http://nodejs.tchol.org/repocfg/fedora/nodejs-stable-release.noarch.rpm

Now you should find out which repos provide v8:

$ yum info v8

On my system there were 2 repos providing v8: updates and nodejs-stable. We only want v8 from nodejs-stable, so we should exclude v8 from all the other repos. We can exclude a package using the repo config files. These files could be found in /etc/yum.repos.d/. The config file for the updates repo is fedora-updates.repo. Open that file and add exclude=v8* to the [updates] section of that file. Finally you can reinstall v8, node and npm:

$ sudo yum install npm

V8 won't be downloaded from the updates repository anymore, but only from the nodejs-stable repository. Therefore yum will always download the right v8 version for node.

share|improve this answer

I just ran into this problem on one system, while another system that should be identical didn't have the problem.

While investigating I noticed that yum resolvedep v8 said 1:v8-3.13.7.5-1.el6.x86_64 on both systems, but yum info v8 didn't show v8 as installed on the system that was working.

On a hunch I ran yum remove v8 on the broken system, which removed 1:v8-3.13.7.5-1.el6.x86_64 and nodejs-0.6.18-1.el6.x86_64.

Then I did yum install nodejs which installed only nodejs-0.6.18-1.el6.x86_64, and now the nodejs works fine.

share|improve this answer
    
This worked for me on an Amazon EC2 CentOS instance. –  brendan Sep 27 '13 at 1:01
up vote 0 down vote accepted

The second error is a decent clue that the problem is not a code error in Node.js but a binary incompatibility problem between C++ components. That symbol in C++ is v8::V8::AdjustAmountOfExternalAllocatedMemory(int). So let's try a different version of v8, like this:

# yum downgrade v8

On my Fedora 16 system this took v8 from 3.10 to 3.6. And now nodejs works!

share|improve this answer

I think John is right about this problem, but his solution did not work for me.

I found the right answer for me here

from that post:

The easiest way to fix it is to remove v8 and it's dependencies and reinstall them using only the nodejs-stable repository:

$ sudo yum -y remove v8
$ sudo yum localinstall --nogpgcheck http://nodejs.tchol.org/repocfg/fedora/nodejs-stable-release.noarch.rpm # You probably already have this repo installed
$ sudo yum --disablerepo=* --enablerepo=nodejs-stable install nodejs-compat-symlinks npm
share|improve this answer
    
Just like the other solution mentioned here this only works partially: when you run yum upgrade v8 is upgraded to a newer version again. Do you know if there's a way to force yum to update v8 only from the nodejs-stable repo? –  Tiddo Aug 20 '12 at 19:42

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.