Fedora 上的 yum Node.js 启动失败,出现 v8 符号错误

Fedora 上的 yum Node.js 启动失败,出现 v8 符号错误

我在 Fedora 16 上安装了 nodejs 包,方法如下:

# yum install nodejs

但是当没有参数运行时它在启动时崩溃了:

$ 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)

还有空文件:

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

如何使用 yum 在 Fedora 上安装 Node.js 并且让它在启动时不崩溃?

答案1

给出的两个答案都不是完整的解决方案:只要您执行yum updateyum upgradev8 将再次升级。完整的解决方案如下:

首先删除 v8 并将 nodejs-stable 存储库添加到 yum,就像 ftrotter 所说的那样:

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

现在您应该找出哪些存储库提供 v8:

$ yum info v8

在我的系统上,有 2 个提供 v8 的存储库:updatesnodejs-stable。我们只想要来自 nodejs-stable 的 v8,因此我们应该从所有其他存储库中排除 v8。我们可以使用存储库配置文件排除包。这些文件可以在中找到/etc/yum.repos.d/。存储库的配置文件updatesfedora-updates.repo。打开该文件并添加exclude=v8*[updates]该文件的部分。最后,您可以重新安装 v8、node 和 npm:

$ sudo yum install npm

V8 将不再从存储库下载updates,而仅从nodejs-stable存储库下载。因此 yum 将始终为节点下载正确的 v8 版本。

答案2

如果您收到上述错误,请停止并执行以下操作:

$ 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

答案3

我刚刚在一个系统上遇到了这个问题,而另一个应该相同的系统没有这个问题。

在调查时我注意到两个系统上都这么yum resolvedep v8说,但没有显示正在运行的系统上安装了 v8。1:v8-3.13.7.5-1.el6.x86_64yum info v8

我凭直觉运行了yum remove v8这个坏掉的系统,它删除了1:v8-3.13.7.5-1.el6.x86_64 nodejs-0.6.18-1.el6.x86_64

然后我yum install nodejs安装了仅有的 nodejs-0.6.18-1.el6.x86_64,现在nodejs工作正常。

答案4

我认为约翰对这个问题的看法是正确的,但他的解决方案对我来说并不适用。

我找到了适合我的正确答案这里

来自该帖子:

修复此问题的最简单方法是删除 v8 及其依赖项,然后仅使用 nodejs-stable 存储库重新安装它们:

$ 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

相关内容