解决Ubuntu 20.04升级后gnome-control-center设置程序无法打开问题
解决Ubuntu 20.04升级后gnome-control-center设置程序无法打开问题
Ubuntu 20.04 系统升级后,发现gnome设置程序无法正常打开了。
在终端运行命令查看错误信息,运行以下命令:
sudo gnome-control-center
从显示的错误信息可以看出,其调用的一些so文件,需要高版本的libc6,而Ubuntu 20.04所支持的libc6版本最高为GLIBC_2.31,高于此版本编译出的库,无法正常运行。
gnome-control-center: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib/x86_64-linux-gnu/samba/libsamba-debug.so.0)
gnome-control-center: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /usr/lib/x86_64-linux-gnu/samba/libsamba-debug.so.0)
gnome-control-center: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib/x86_64-linux-gnu/samba/libdbwrap.so.0)
gnome-control-center: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /usr/lib/x86_64-linux-gnu/samba/libmessages-dgm.so.0)
gnome-control-center: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /usr/lib/x86_64-linux-gnu/samba/libmessages-dgm.so.0)
gnome-control-center: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /lib/x86_64-linux-gnu/libldb.so.2)
gnome-control-center: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /lib/x86_64-linux-gnu/libldb.so.2)
gnome-control-center: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /usr/lib/x86_64-linux-gnu/samba/libsamba-modules.so.0)
gnome-control-center: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib/x86_64-linux-gnu/samba/libwinbind-client.so.0)
对于此问题有两种解决办法:
- 编译新版本的glibc,将其安装到单独的目录,程序运行时指定路径调用新的so文件。
- 对于需要调用高版本libc6的.so文件,重新安装旧版本的deb包。
这里采用相对简单的第2种办法。
步骤一、首先用dpkg -S [文件路径],查找出.so文件分别属于哪个包,结果如下:
libwbclient0:
/usr/lib/x86_64-linux-gnu/samba/libsamba-debug.so.0
samba-libs:
/usr/lib/x86_64-linux-gnu/samba/libdbwrap.so.0
/usr/lib/x86_64-linux-gnu/samba/libmessages-dgm.so.0
/usr/lib/x86_64-linux-gnu/samba/libsamba-modules.so.0
/usr/lib/x86_64-linux-gnu/samba/libwinbind-client.so.0
libldb2:
/lib/x86_64-linux-gnu/libldb.so.2
步骤二、编辑/etc/apt/souces.list文件,将focal-updates和focal-security两行暂时注释掉,只保留focal仓库:
deb http://mirrors.ustc.edu.cn/ubuntu/ focal main
#deb http://mirrors.ustc.edu.cn/ubuntu/ focal-updates main
#deb http://mirrors.ustc.edu.cn/ubuntu/ focal-security main
步骤三、更新apt索引,然后使用apt search [包名] 查看需要安装的包的版本:
sudo apt update
sudo apt search libwbclient0
sudo apt search samba-libs
sudo apt search libldb2
// 查找后发现旧版本包为
// libldb2=2:2.0.8-2
// libwbclient0=2:4.11.6+dfsg-0ubuntu1
// samba-libs=2:4.11.6+dfsg-0ubuntu1
步骤四、使用apt install [包名]=[版本号]安装老版本包:
sudo apt install --no-install-recommends libldb2=2:2.0.8-2 libwbclient0=2:4.11.6+dfsg-0ubuntu1 samba-libs=2:4.11.6+dfsg-0ubuntu1
// 运行时会提示一些依赖包会被删除,记录这些包名,后续步骤需要装回来:
// gnome-control-center gvfs-backends libsmbclient python3-ldb ubuntu-desktop ubuntu-desktop-minimal
步骤五、将这些包标记为hold,即后续运行apt upgrade时不会被升级:
sudo apt-mark hold libldb2 libwbclient0 samba-libs
步骤六、安装回被删除的依赖包:
// 此步骤会提示gvfs等包版本不匹配,因此需要先安装指定旧版本的gvfs等包:
sudo apt install gvfs=1.44.1-1ubuntu1 gvfs-common=1.44.1-1ubuntu1 gvfs-daemons=1.44.1-1ubuntu1 gvfs-fuse=1.44.1-1ubuntu1 gvfs-libs=1.44.1-1ubuntu1
sudo apt install --no-install-recommends gnome-control-center gvfs-backends libsmbclient python3-ldb ubuntu-desktop ubuntu-desktop-minimal
步骤七、从开始菜单尝试运行gnome设置程序,确认其能正常运行。
步骤八、编辑/etc/apt/souces.list文件,恢复原来的focal-updates和focal-security源:
deb http://mirrors.ustc.edu.cn/ubuntu/ focal main
deb http://mirrors.ustc.edu.cn/ubuntu/ focal-updates main
deb http://mirrors.ustc.edu.cn/ubuntu/ focal-security main
步骤九、运行apt update和apt upgrade,更新系统:
sudo apt update
sudo apt upgrade
// 此步骤会发现被mark为hold状态的包,是不会被升级的。
步骤十、再次从开始菜单尝试运行gnome设置程序,确认其能正常运行。
至此,问题已被解决。