3

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?

5 Answers 5

3

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.

3

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
1
  • This answer looks to be the same as what ftrotter posted a while ago. Nov 11, 2012 at 18:48
2

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.

1
  • This worked for me on an Amazon EC2 CentOS instance.
    – brendan
    Sep 27, 2013 at 1:01
0

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!

0

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
1
  • 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, 2012 at 19:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .