CentOS 安装 Deno 或 dvm 报错:version 'GLIBC_2.18' not found

1,096 阅读2分钟

deno 从2018年诞生已进入第5个年头,随着官方能力的不断增强和社区的不断壮大,deno的尝试价值在增加。在使用尝试新版本deno的时候可能会遇到一些问题,比如安装。使用官方命令在 CentOS 7 系统安装 Deno

curl -fsSL https://deno.land/x/install/install.sh | sh

安装没问题,但运行的时候报错

deno --help
> deno: /lib64/libc.so.6: version 'GLIBC_2.18' not found (required by deno)

问题原因

是因为 Deno 1.0.0 版本后采用了 GLIBC_2.18 +,而 CentOS 7 默认安装的是 GLIBC_2.18。通过下面命令可以产看glibc版本

ldd --version
> dd (GNU libc) 2.18
> Copyright (C) 2013 Free Software Foundation, Inc.
> ...

# or
ll /lib64/libc.so.6
> /lib64/libc.so.6 -> libc-2.18.so

解决方法

一个方法是更换为 CentOS 8 系统,这个对很多人来说不一定行。另一个方法是手动升级 glibc 版本,亲测可行。具体步骤如下

1. 下载解压

在合适的目录下载 glibc zip 包,下载完解压

# 下载时如 https 协议连接不上,可以使用 http 协议
# 即 http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
wget https://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar -zxvf glibc-2.18.tar.gz

2. 编译安装及验证

  • 配置,编译
# glibc 要求要在 build 目录下面配置和构建,要先创建一个 build 目录
cd glibc-2.18 && mkdir build && cd build
# 设置配置
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
## 编译的时间会比较长(3-5分钟)
make && make install
  • 验证 glibc 版本
ll /lib64/libc.so.6
> xxxxxx /lib64/libc.so.6 -> libc-2.18.so
  • 验证 deno 运行

简单执行deno --versiondeno --help 能正常输出内容就可以了

○ deno --version
deno 1.34.0 (release, x86_64-unknown-linux-gnu)
v8 11.5.150.1
typescript 5.0.4

Deno 版本管理工具

没有版本管理工具,在开发时会很不方便,总会遇到需要新旧版本共存的情况。node 有版本管理工具 nvmdeno 也有了版本管理工具 dvm。在 CentOS 7 及以下系统,在使用官方的安装工具安装后,尝试运行dvm --helpdvm -V,会遇到与deno类似的问题:

dvm -V
> dvm: /lib64/libc.so.6: version `GLIBC_2.29' not found (required by dvm)
dvm: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by dvm)
dvm: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by dvm)

要装 GLIBC_2.29 版本的话,情况比装 GLIBC_2.18 更复杂些,因为 GLIBC_2.29 会对系统其他工具版本有更高的要求,这个在执行 glibc 的config地时候就会看到报错提示。

参考: