解决Linux无法正常安装与卸载Node.js的方法


Posted in Javascript onJanuary 19, 2018

前言

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。学习Nodejs首先需要会安装环境。实际生产环境,Node.js一般部署于Linux环境。

自从买了VPS后就没闲着,总想要充分利用起来倒腾点东西。

于是决定安装nodejs搭建web服务器等,如今nodejs稳定版本已经更新到8.x了,因此我就试着装一下8.x吧,没想到又遇到了坑,一搞搞了好几天。自己稍微总结了一下,写成笔记,给有遇到相同坑的朋友们参考一下~

官方推荐安装方法(对应版本仓安装Nodejs)

我的操作系统是CentOS6 64Bit的,我查阅了Nodejs官方升级文档(包含各种可支持的系统),针对我的系统需要分别执行以下几条命令:

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum -y install nodejs

当然你也许需要通过以下命令额外安装构建工具:

sudo yum install gcc-c++ make
# or: sudo yum groupinstall 'Development Tools'

如果其他系统则可以参考文档中其他内容。

在这里我就遇到坑了(可能存在该情况较少,所以稍后具体解决放在文章最后来说)。上面第一条应该是静默指定使用8.x的资源,便于安装时采用这个而不是yum自己原来的远程仓,不知道这个解释对不对。

我反复试过了,命令明明提示请执行 sudo yum -y install nodejs 来安装nodejs8.x,却一直安装的是6.x,难道是依赖问题?找不出原因的我,没有办法只能找其他安装途径,于是发现了第二种安装办法。

手动安装Nodejs

获取最新的安装包,并进行解压缩安装,可能依赖Python2.7以上版本,且待我慢慢来说。

如果是仅手动安装Nodejs8.x,执行以下命令:

yum install gcc-c++ openssl-devel
cd /usr/local/src
wget http://nodejs.org/dist/v8.9.4/node-v8.9.4.tar.gz
tar zxvf node-v8.9.4.tar.gz
(cd into extracted folder: ex "cd node-v8.9.4.tar.gz")
./configure
make
make install

顺利的话应该不会有什么问题,大概会过一段时间,稍微有点长,就提示安装好了,可以执行

node -v

来查看是否是8.x,如果好了,基本上关于安装部分就大功告成了。如果没好,太惨了,跟Python有关系的话,请查看Linux下Python安装升级心(还在草稿)。

删除nodejs

接着我们来看看删除,因为你已经安装了一个低版本,需要升级,那就是要先删除旧版本了,nodejs应该是向下兼容的,所以我就没有去研究可能闲着蛋疼才会去研究如果保存多个版本nodejs,当然在新版中可能会存在部分旧的功能废除而造成异常,虽然一般来说升级利大于弊,不过还是要考虑老项目环境是否要升级!如果你是闲着蛋疼的人,必有理由说服我,请在下方留言。差点跑题,删除命令简直是太简单了。

sudo yum remove nodejs

然后按提示输入y,回车后很快就删了。一切删除操作都是令人兴奋的。。。

其实,我在安装过程中远没有那么轻松,否则也不会折腾几天了,一个是版本错误,一个是Python升级。版本问题,后来差了很多资料才发现,原来是yum缓存问题导致。

如果遇到和我类似的问题,请尝试以下命令:

rm -f /etc/yum.repos.d/nodesource-el.repo
yum clean all
yum -y remove nodejs
yum -y install nodejs

参考资料

  • Nodejs官方文档,通过包管理安装Nodejs
  • Centos下手动安装Nodejs的方法
  • 无法在Yum仓下安装正确的Nodejs版本(和刚才示例的代码类似,都是清除缓存,不过对我无效)
  • CentOS下使用nodejs7.x的包进行安装却安装成了6.9.5(针对我的有效方案)
  • 如何通过Linux命令删除Nodejs

总结

所以呢,其实就是应该遇到版本不对的情况就尝试清除缓存,再用官方命令进行安装就好了~

我想既然是Yum仓库缓存的问题,除了Nodejs,别的包也许也会有类似情况吧,如果也发现了选择了需要的版本后依然装的是旧版的,又和依赖没什么关系,就试试清除缓存吧 :)

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
Javascript 类与静态类的实现
Apr 01 Javascript
JavaScript实现复制功能各浏览器支持情况实测
Jul 18 Javascript
js添加千分位的实现代码(超简单)
Aug 01 Javascript
AngularJS模块详解及示例代码
Aug 17 Javascript
Vue.js系列之项目搭建(1)
Jan 03 Javascript
纯js模仿windows系统日历
Feb 04 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
Sep 15 Javascript
JavaScript实现精美个性导航栏筋斗云效果
Oct 29 Javascript
vue学习教程之带你一步步详细解析vue-cli
Dec 26 Javascript
vue中过滤器filter的讲解
Jan 21 Javascript
微信小程序 bindtap 传参的实例代码
Feb 21 Javascript
vue 判断元素内容是否超过宽度的方式
Jul 29 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 #jQuery
解决js ajax同步请求造成浏览器假死的问题
Jan 18 #Javascript
js实时监控文本框输入字数的实例代码
Jan 18 #Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
Jan 18 #Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
Jan 18 #Javascript
分享ES6的7个实用技巧
Jan 18 #Javascript
vue 动态修改a标签的样式的方法
Jan 18 #Javascript
You might like
PHP中用正则表达式清除字符串的空白
2011/01/17 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
JavaScript判断变量是对象还是数组的方法
2014/08/28 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
基于jquery实现全屏滚动效果
2015/11/26 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
使用vue打包时vendor文件过大或者是app.js文件很大的问题
2018/06/29 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
浅谈vue权限管理实现及流程
2020/04/23 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
python定时器使用示例分享
2014/02/16 Python
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
Python中Threading用法详解
2017/12/27 Python
浅谈Python脚本开头及导包注释自动添加方法
2018/10/27 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
会计专业大学生职业生涯规划书
2014/02/11 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
2014年计生工作总结
2014/11/21 职场文书
铁人纪念馆观后感
2015/06/16 职场文书