我想在 CentOS 上安装 node.js
- 不幸的是,我无法通过命令行在 centOS 上安装 gcc(以及为了让节点能够编译而通常随之附带的所有内容)。
到目前为止我尝试过的
sudo yum install gcc
我收到以下错误
Downloading Packages: Running rpm_check_debug Running Transaction Test memory alloc (8 bytes) returned NULL.
是的有将 ulimit 首选项设置为“unlimited”。
- 我也尝试过单独安装依赖项,尽管这只可能安装几个,而其余的(即 glibc)需要与依赖项一起安装,并给我同样的错误:
memory alloc (8 bytes) returned NULL.
。
- 我也尝试安装各个依赖项的 rpm(即 glibc),但是 rpm 抛出相同的错误,
memory alloc (8 bytes) returned NULL.
这非常烦人。
我推断
- 我认为(并且希望)这可能是一个简单的偏好问题,因为我能够安装较小的文件(<10mb 或类似大小)而不会出现错误。
答案1
说实话?在你遇到 RAM 太少的情况下,你需要探索的选项之一是进行编译在其他系统上然后将结果带到资源受限的服务器。这实际上就是安装 RPM,您无需学习如何打包 RPM 即可完成类似操作。
- 在具有更多资源的系统上,将其配置为与配置 wee VPS 相同的配置。硬件会有所不同,但我认为这对 node.js 来说并不重要
- 这可以简单到在笔记本电脑的 VirtualBox 中运行 CentOS 6.3,或者花几个小时在云提供商上获取更大的实例类型并在那里执行此操作。
- 编译 node.js
- 运行 configure 和 make,但是
make install
现在不要执行。
- 运行 configure 和 make,但是
- 将编译好的目录
- 转移到你的 VPS 并提取
- 跑步
make install
。
这应该可行,因为安装脚本通常更关心移动文件而不是编译东西,因此占用的 RAM 较少。
答案2
您使用的是 openvz,这让我怀疑主机超卖了。因为您无法在其上进行交换,所以通常应该有可突发内存来弥补暂时的内存不足。这是 openvz 的一个已知问题,但除非主机有太多虚拟机,否则这不是问题。
您将需要为您的实例订购额外的内存或者将 vps 移到其他地方。
答案3
这是我早已忘记的众多烦恼之一,因为我绝对拒绝将 OpenVZ 用于任何事情。永远。
如果必须使用 VPS,请使用基于 KVM、VMware 或 Xen 的 VPS。(按我的个人偏好顺序列出。)
当我曾是在这些糟糕的小型 VPS 上,托管服务器卡住了,我可以通过禁用插件来绕过这个错误。例如:
yum --disableplugin=fastestmirror groupinstall "Development Tools"
虽然有时这还不够,我必须关闭正在运行的服务才能释放足够的 RAM 来安装程序包。让我告诉你,那很有趣。
答案4
看来您的机器需要比当前可用内存多得多的内存才能运行。因此尝试添加(即使是暂时的)足够的交换空间,然后重试。