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 --version
或 deno --help
能正常输出内容就可以了
○ deno --version
deno 1.34.0 (release, x86_64-unknown-linux-gnu)
v8 11.5.150.1
typescript 5.0.4
Deno 版本管理工具
没有版本管理工具,在开发时会很不方便,总会遇到需要新旧版本共存的情况。node
有版本管理工具 nvm
,deno
也有了版本管理工具 dvm。在 CentOS 7
及以下系统,在使用官方的安装工具安装后,尝试运行dvm --help
或 dvm -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
地时候就会看到报错提示。
参考: