![CentOS 机器上的 node.js 版本是 v0.6.18,yum 无法更新或升级它。为什么?](https://linux22.com/image/1333734/CentOS%20%E6%9C%BA%E5%99%A8%E4%B8%8A%E7%9A%84%20node.js%20%E7%89%88%E6%9C%AC%E6%98%AF%20v0.6.18%EF%BC%8Cyum%20%E6%97%A0%E6%B3%95%E6%9B%B4%E6%96%B0%E6%88%96%E5%8D%87%E7%BA%A7%E5%AE%83%E3%80%82%E4%B8%BA%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我目前正在使用安装了节点版本的 CentOS 机器,当我这样做时:
nodejs -v
我明白了
v0.6.18
但是我注意到在 nodejs.org 网站上,最新版本是 0.8.12,因此请执行以下操作:
sudo yum update nodejs
我明白了
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos-mirror.jchost.net
* epel: fedora-epel.mirror.lstn.net
* extras: centos.mirror.lstn.net
* updates: centos.mirror.lstn.net
Setting up Update Process
No Packages marked for Update
怎么回事?为什么 yum 找不到最新版本的 node?我是否必须从 nodejs.org 下载 .tar.gz 并以此方式安装?
答案1
您的系统上似乎没有加载 NodeJS Yum 存储库。请按照 Node 的“通过包管理器安装“页面将存储库加载到您的系统上,运行yum clean all
一次以确保万无一失,然后yum update
再次尝试该命令。如果您从非 Yum 源(例如,从源构建)获取 Node,则可能必须运行yum install nodejs
(而不是update
)或其他东西才能开始通过 Yum 管理您的 NodeJS 实例。
此外,由于 Node 开发工作量巨大,发布频率也很高,因此较新版本的 RPM 打包可能在一段时间内无法渗透到 Yum 存储库中进行分发(这是我使用 EPEL 和许多快速开发的软件的经验)。如果是这种情况,请考虑使用第三方/其他 Yum 存储库来打包和/或跟踪新 Node 版本(例如这个),或者使用不同的包管理器(是否npm
支持更新它所运行的 Node 实例?)或者手动下载/安装该软件。
答案2
我写了一个脚本来处理这个问题。请按照以下步骤操作:
# retrieve
curl https://gist.github.com/4348083/download > centos5.8-upgrade-nodejs0.8.16.tar.gz
# extract
tar -xvf centos5.8-upgrade-nodejs0.8.16.tar.gz --strip 1
# prepare
chmod 744 centos5.8-upgrade-nodejs0.8.16.sh
# execute
sudo ./centos5.8-upgrade-nodejs0.8.16.sh
# cleanup
sudo rm -r bzip2-1.0.6* centos5.8-upgrade-nodejs0.8.16* Python-2.7*