我在 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 update
或yum upgrade
v8 将再次升级。完整的解决方案如下:
首先删除 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 的存储库:updates
和nodejs-stable
。我们只想要来自 nodejs-stable 的 v8,因此我们应该从所有其他存储库中排除 v8。我们可以使用存储库配置文件排除包。这些文件可以在中找到/etc/yum.repos.d/
。存储库的配置文件updates
是fedora-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_64
yum 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