linux 查看glibc的版本、查看所安装的软件的依赖

GLIBC是一个C标准库,很多C/C++程序都会依赖它,在linux系统上安装一些软件(库)时,linux系统需要满足该软件(库)的所有依赖才行,否则,就会出现无法安装或使用的问题,本文以最近在ubuntu系统下使用到的库libnss3-tools作为示例进行说明。

libnss3-tools是一个用于网络安全服务的软件包。提供了一些工具和库文件,用于处理网络安全协议和证书。在ubuntu系统上安装该该库时报错了,错误如下:usr/bin/certutil: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by usr/bin/certutil)

该错误意思是说:usr/bin/certutil需要的glibc的版本为:GLIBC_2.34,但是再我的系统中没有这个版本或者版本不兼容。所以查了下当前ubuntu系统的glibc版本:

:~$ ldd --version
ldd (Ubuntu GLIBC 2.27-3ubuntu1.6) 2.27
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

或者

:~$ getconf GNU_LIBC_VERSION
glibc 2.27

可见,当前系统glibc的版本为2.27,低于所需版本2.34,所以要么升级glibc版本,要么安装适合当前gblic的libnss3-tools。升级glibc可能会导致系统其他部分不工作。在Debian或Ubuntu上,你可以使用apt-get命令来更新glibc

sudo apt-get update
sudo apt-get upgrade libc6

所以,稳妥起见,我考虑降低libnss3-tools的版本以适应当前glibc,于是在debian官网查找其它版本,过程如下:

一、登录nss包管理地址

Debian Package Tracking System -nss

linux 查看glibc的版本、查看所安装的软件的依赖_第1张图片

二、找到低版本,如这里选择2:3.61-1+deb11u3,然后点击该链接

linux 查看glibc的版本、查看所安装的软件的依赖_第2张图片

三、此时进入的是nss源码的一个说明界面,该界面显示了nss包的依赖

此处说明下:nss源码包构建时同时构建了以下二进制包:libnss3、libnss3-dev、libnss3-tools
linux 查看glibc的版本、查看所安装的软件的依赖_第3张图片

四、点击界面中的链接libnss3-tools,跳转到libnss3-tools的说明界面,该界面显示的为libnss3-tools依赖

linux 查看glibc的版本、查看所安装的软件的依赖_第4张图片

从界面中依赖可知,如果是amd架构下,对于glibc的依赖为:libc6 (>= 2.14) [amd64]

同样,我们看下其它版本对应glibc的依赖:

linux 查看glibc的版本、查看所安装的软件的依赖_第5张图片

linux 查看glibc的版本、查看所安装的软件的依赖_第6张图片

linux 查看glibc的版本、查看所安装的软件的依赖_第7张图片

综上所述,这里我选择相对最新的适合当前glibc版本的2:3.61-1+deb11u3。

你可能感兴趣的:(linux,运维,服务器)