如何解决“node: /lib/x86_64-linux-gnu/libc.so.6: 找不到版本 'GLIBC_2.28' (node 需要)”的问题?
为什么会出现“node: /lib/x86_64-linux-gnu/libc.so.6: 找不到版本 'GLIBC_2.28'(node 需要)”的问题?
“node: /lib/x86_64-linux-gnu/libc.so.6: 找不到版本 'GLIBC_2.28'(node 需要)” 问题通常发生在尝试在安装了旧版本 GNU C 库 (GLIBC) 的系统上运行 Node.js 时。Node.js 依赖于特定版本的 GLIBC(在本例中为 2.28 或更高版本),如果系统安装的 GLIBC 版本较低,则会导致此错误。
GLIBC 是一个至关重要的库,它为运行在 Linux 系统上的程序提供必要的功能。不同的 Linux 发行版默认安装的 GLIBC 版本可能不同,因此在尝试运行需要较新版本 GLIBC 的软件时,可能会出现兼容性问题。
当使用 GLIBC 版本高于系统已安装版本构建的 Node.js 二进制文件或软件包时,通常会发生此错误。这表明需要升级系统的 GLIBC 版本以满足当前使用的 Node.js 版本要求。
为了解决这个问题,我们可以使用 nvm(Node 版本管理器)来管理 Node.js 版本,并确保与所需的 GLIBC 版本兼容。
nvm(Node 版本管理器)是什么?
nvm(Node 版本管理器)是一个命令行实用程序,可让您轻松管理单台机器上的多个 Node.js 版本。它提供了一种简单的方法来安装、切换和管理不同项目的不同 Node.js 版本。
以下是关于nvm的一些要点:
-
版本管理:借助 nvm,您可以在系统上安装和管理多个 Node.js 版本。这在处理需要特定 Node.js 版本的项目时尤其有用,因为不同的项目可能对版本有不同的要求。
-
轻松切换版本:nvm 让您能够轻松切换已安装的 Node.js 版本。您可以将特定的 Node.js 版本设置为默认版本,也可以为不同的项目选择不同的版本。这种灵活性使您能够为每个项目使用所需的版本,而不会出现冲突。
-
项目级 Node.js 配置:nvm 允许您为每个项目或目录定义 Node.js 版本。通过
.nvmrc在项目根目录中指定一个文件,您可以确保在导航到该项目目录时自动选择正确的 Node.js 版本。 -
全局和本地包管理:nvm 将每个 Node.js 版本的全局包和本地包分开管理。全局包会针对每个版本单独安装,从而确保包的隔离性以及与所选 Node.js 版本的兼容性。
-
社区支持:nvm 是一个拥有活跃社区的开源项目。它被广泛采用和维护,确保持续更新、修复漏洞并添加新功能。nvm 的官方 GitHub 代码库提供了详细的文档、安装说明和实用资源。
使用 nvm 可以简化 Node.js 版本的管理,并确保跨项目开发环境的一致性。它能让您轻松切换 Node.js 版本,避免因版本要求不同而导致的冲突。借助 nvm,您可以无缝地处理使用不同 Node.js 版本的不同项目,从而提高开发效率并保持项目兼容性。
如需了解有关 nvm 的更多详细信息、安装说明和更新,您可以访问官方 GitHub 代码库:https://github.com/nvm-sh/nvm#installing-and-updating
修复
注意:此解决方案需要使用某个curl实用程序。如果您尚未curl安装,可以使用 Linux 发行版的软件包管理器进行安装。对于基于 Debian 的系统,可以使用以下命令:
```bash
sudo apt-get update; sudo apt-get install -y curl
```
现在,让我们继续进行修复 GLIBC 版本问题的步骤:
步骤 1:安装 nvm
-
运行以下命令下载并执行 nvm 安装脚本:
```bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash ```
这将下载安装脚本并在当前 shell 会话中执行它。
步骤 2:在 .bashrc 文件中配置 nvm
-
检查您的文件中是否已存在 nvm 所需的配置行
.bashrc。如果缺少这些配置行,以下代码段将添加它们:```bash check=' export NVM_DIR="$HOME/.nvm"' if ! grep -qF "$check" ~/.bashrc; then echo "" >>~/.bashrc echo "# Add NVM to path" >>~/.bashrc echo 'export NVM_DIR="$HOME/.nvm"' >>~/.bashrc echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"' >>~/.bashrc echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"' >>~/.bashrc fi ```
代码段解释:
- 该
check变量存储字符串模式,用于检查配置行是否已存在。 grep带有该选项的命令用于-qF在.bashrc文件中搜索模式,但不打印任何内容。- 如果找不到匹配的模式,
if则执行语句内的代码块。 - 在文件末尾添加四行
.bashrc,添加必要的 nvm 配置。
步骤 3:重新加载 .bashrc 文件
-
要将更改应用到当前终端会话,请运行以下命令:
```bash source ~/.bashrc ```
这将重新加载.bashrc文件并使 nvm 配置可用。
步骤 4:验证 nvm 安装
-
运行以下命令以验证 nvm 是否已安装并正常工作:
```bash nvm --version ```
这将显示您系统上安装的 nvm 版本。
您已成功安装并配置 nvm 以修复基于 Debian 的 Linux 系统上 Node.js 的 GLIBC 版本问题。
参考资料:
https ://stackoverflow.com/a/73631880/1437877
https://stackoverflow.com/a/47787025/1437877