TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 模板代码

    • 各类组件
    • 通用模板
  • 国产化&其他系统

    • Centos系列
    • Kylin系列
    • OpenEuler系列
    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 定制开发

    • 组件版本定制
    • 样式风格定制
  • 蓝图愿景
  • 技术支持
  • 合作共建
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件安装

    • 常规&高可用
  • 版本专题

    • 更新说明
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 模板代码

    • 各类组件
    • 通用模板
  • 国产化&其他系统

    • Centos系列
    • Kylin系列
    • OpenEuler系列
    • Rocky系列
    • Ubuntu系列
  • 生产调优

    • 组件调优指南
    • 1v1指导调优
  • 定制开发

    • 组件版本定制
    • 样式风格定制
  • 蓝图愿景
  • 技术支持
  • 合作共建
GitHub (opens new window)
  • Hadoop

  • Spark

  • Trino

    • Trino requires Temurin or Oracle JDK for development
    • GLIBC 与 GLIBCXX 版本过低
      • 一、问题背景:Node 构建 Trino Web UI 失败
      • 二、环境验证与规避方案尝试
      • 三、解决方案汇总
      • 四、方案一:手动编译 glibc + gcc
      • 五、方案二:使用非官方兼容 Node 版本(推荐)
        • 下载地址
  • Hudi

  • Paimon

  • Livy

  • Flink

  • Atlas

  • Superset

  • Jsvc

  • Zookeeper

  • Hive

  • 报错解决-Bigtop
  • Trino
JaneTTR
2022-12-18
目录

GLIBC 与 GLIBCXX 版本过低

# 一、问题背景:Node 构建 Trino Web UI 失败

在 CentOS 7.9 上构建 Trino 时,前端模块依赖 Node.js 环境进行打包操作(webpack、babel、flow等),执行 npm run package 报如下错误:

drwxrwxr-x 1 root root 4096 Mar 22 03:10 .
drwxrwxr-x 1 root root 4096 Mar 22 03:10 ..
drwxrwxr-x 1 root root 4096 Mar 22 03:10 assets
-rw-rw-r-- 1 root root 1659 Mar 22 03:10 disabled.html
-rw-rw-r-- 1 root root 1272 Mar 22 03:10 embedded_plan.html
-rw-rw-r-- 1 root root 1629 Mar 22 03:10 index.html
-rw-rw-r-- 1 root root 2537 Mar 22 03:10 login.html
-rw-rw-r-- 1 root root 1442 Mar 22 03:10 plan.html
-rw-rw-r-- 1 root root 1428 Mar 22 03:10 query.html
-rw-rw-r-- 1 root root 1331 Mar 22 03:10 references.html
drwxrwxr-x 1 root root 4096 Mar 22 03:10 src
-rw-rw-r-- 1 root root 1834 Mar 22 03:10 stage.html
-rw-rw-r-- 1 root root 2098 Mar 22 03:10 timeline.html
drwxrwxr-x 1 root root 4096 Mar 22 03:10 vendor
-rw-rw-r-- 1 root root 1425 Mar 22 03:10 worker.html
-rw-rw-r-- 1 root root 1429 Mar 22 03:10 workers.html
(maven_env) [root@centos1 webapp]# npm run package
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by node)
node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by node)
node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by node)
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by node)
(maven_env) [root@centos1 webapp]# clear
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

报错解析

这是因为系统原生的 glibc 和 libstdc++ 版本过低,无法满足新版 Node.js 所需的依赖链要求(尤其是 v18+ 以后)。

通过查看 node 所依赖的符号版本,可以清楚地看到其对 GLIBCXX 和 CXXABI 的高版本依赖。

# 二、环境验证与规避方案尝试

项目目录结构如下(webapp 为 Trino Web 前端):

image-20250416224812781

运行后,触发如上错误。

我也尝试了替代方案:自行编译 glibc 2.36 与 gcc 10.3.0,并使用 ld-linux-x86-64.so.2 手动指定运行时动态链接器与库路径:

/opt/enhance_env/envs/lib/ld-linux-x86-64.so.2 \
  --library-path /opt/enhance_env/envs/lib:/opt/enhance_env/envs/lib64 \
  /root/.nvm/versions/node/v22.14.0/bin/node \
  /root/.nvm/versions/node/v22.14.0/bin/npm -v
1
2
3
4

执行后可以正常工作:

执行截图

笔记

这种方式不修改系统默认环境,而是通过设置 LD 运行环境变量实现“影子运行环境”,对主系统最小侵入。

# 三、解决方案汇总

方案 描述 推荐程度
方案一 手动编译 glibc + gcc 到非系统路径,通过 ld-linux 指定 通用但繁琐
方案二 直接使用非官方 Node.js 预编译版本(内置高版本 glibc) 快捷推荐

# 四、方案一:手动编译 glibc + gcc

编译说明

你可以通过源码编译出较新版本的 glibc 和 gcc,并将其安装在如 /opt/enhance_env/ 路径下。

最终运行时使用方式如前:

/opt/enhance_env/envs/lib/ld-linux-x86-64.so.2 \
  --library-path /opt/enhance_env/envs/lib:/opt/enhance_env/envs/lib64 \
  node -v
1
2
3

注意

注意:使用这种方式需在每次执行 node/npm 命令时均指定动态库路径,或者封装 wrapper 脚本。

# 五、方案二:使用非官方兼容 Node 版本(推荐)

社区已有专门为旧系统构建的兼容版本 Node.js,包含了预编译的 glibc >= 2.27 支持,非常适合在 CentOS 7.x 下使用。

提示

GitHub 地址:
https://github.com/JaneTTR-Bigdata/unofficial-builds?tab=readme-ov-file

image-20250416223428233

# 下载地址

来自 Node 官方镜像的兼容构建版本:

https://unofficial-builds.nodejs.org/download/release/

示意图如下:

版本下载页

下载后,将文件名修改为标准命名:

mv node-v22.14.0-linux-x64-glibc-217.tar.gz node-22.14.0-linux-x64.tar.gz
1

并解压:

tar -xzf node-22.14.0-linux-x64.tar.gz -C /opt/modules
1

笔记

部分目录名可能仍然保留 glibc-217 后缀,可用软链标准化命名。

#Trino#Node.js#编译报错#环境兼容#GLIBC
Trino requires Temurin or Oracle JDK for development
javax.annotation.Nullable 缺失

← Trino requires Temurin or Oracle JDK for development javax.annotation.Nullable 缺失→

最近更新
01
Pandoc 缺失导致 SparkR 构建失败
06-08
02
Cyrus SASL/GSASL 缺失解决
06-07
03
Hadoop_3.3.4 编译实战 1.0.0+
06-06
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式