背景
书接上回,在部署好 Jenkins 后,紧急着就要开始部署前端项目了。
而前端项目的部署最重要的一个环节就是编译,我们项目选用的前端框架是 AngularJS ,需要用到 Node 工具来编译。
安装 node
我们的 Linux 服务器上还没有安装 Node,所以需要安装一波。
其实安装倒挺简单的,把 node 从官网下载下来,然后放到 linux 服务器上解压,配置环境变量就好了。这一步都挺挺简单的,一说就会。
接下来的事情就有点意思了,我配置好 node 后,是不是得看看 node 的版本,用 node -v 命令查下,结果就提示如下信息:
node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by node)
大概的意思就是 node 需要 GLIBC_2.28 的版本,但是当前服务器上没有。
根据这个报错信息到搜索引擎上查下,得到的结论就是要用升级 glibc 的版本,它一个系统库。OK,那就升级看看。
升级 GLIBC 2.28 的脚本
找到了一篇博客写的内容,还温馨地提供了一份升级脚本,如下所示:
# 解压安装包
$ tar -xJf glibc-2.28.tar.xz
$ cd glibc-2.28/
$ mkdir build
$ cd build
# 配置源代码包,以便在系统上进行编译和安装。
$ ../configure --prefix=/usr
$ make
这段脚本做了三件事:
1、解压安装包
2、配置源代码包
3、编译
看起来也挺简单的,试试看。按照上面提供的命令操作了一波,就提示如下信息了:segmentation fault
而且更奇怪的是,我输入任何命令都是提示 segmentation fault。
无解了,于是我想重连服务器试试看,结果 ssh 连不上服务器了。
没办法了, 只能重启试试看了。
重启后就黑屏卡在那里不动了,用救援模式重启依旧如此。
图片
到搜索引擎上按关键词搜索:升级glibc导致的系统崩,确实有很多朋友遇到了类似问题。而且用的脚本一模一样,这个脚本坑人啊!
图片
正确的命令是:
../configure --prefix=/opt/glibc-2.28
尝试修复
找了下网上的解决方案,尝试进行修复,还是没能重启成功。
还好能将磁盘挂载到另外一台服务器上,最后就只能把重要的文件备份出来了。比如备份 jenkins 目录,不然由得重新折腾一遍了,离线环境部署 jenkins 还是比较麻烦的。
解决方案
问题原因其实就是当前的 Ubuntu 版本太低了,不支持当前的 node 版本,解决方案就是把 Ubuntu 重装一个高版本的。
最后
为了感谢这位博主提供的脚本,必须评论留言一波!
图片
希望大家引以为鉴,对于更新系统核心库的操作一定要慎重!更新之前,提前做好系统镜像和备份文件也是非常有必要的。