Ubuntu下使用Meld作为Git Difftool对比分支时出现Python3符号查找错误
解决Git Difftool调用Meld失败的问题及替代工具推荐
问题分析
错误提示/usr/bin/python3: symbol lookup error: /snap/core20/current/lib/x86_64-linux-gnu/libpthread.so.0: undefined symbol: __libc_pthread_init, version GLIBC_PRIVATE,核心是Snap版本的core20库与系统GLIBC库冲突,导致Git调用Meld时触发环境异常(单独运行Meld不受影响是因为直接使用系统环境)。
解决办法
1. 替换Meld为Deb包版本(推荐)
Snap版Meld依赖Snap的core20环境,容易和系统更新后的库冲突,换成Deb包版本可规避问题:
- 卸载Snap版Meld:
sudo snap remove meld - 安装Deb官方包:
sudo apt update && sudo apt install meld - 配置Git使用该版本Meld:
之后重新执行git config --global difftool.meld.path /usr/bin/meldgit difftool -d branch123即可。
2. 强制Git调用Meld时使用系统库
如果不想更换Meld安装方式,可修改Git配置,让Meld调用时跳过Snap的库环境:
- 打开Git全局配置文件编辑:
git config --global --edit - 添加或修改以下配置:
保存退出后重新执行命令即可。[difftool "meld"] path = /usr/bin/meld cmd = LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu /usr/bin/meld "$LOCAL" "$REMOTE"
3. 修复或回滚Snap core20库
若坚持使用Snap版Meld,可尝试修复core20:
- 刷新core20:
sudo snap refresh core20 - 刷新无效则回滚到之前版本:
sudo snap revert core20 - 暂时阻止core20更新(避免再次触发冲突):
等Snap官方修复该兼容性问题后,再执行sudo snap refresh --hold core20sudo snap refresh --unhold core20解除限制。
替代工具推荐
如果上述方法无效,可选择以下同类型工具,支持分支对比与可视化合并:
KDiff3:开源免费,界面直观,支持文件/目录对比、三方合并,可直接拖拽更改到目标文件。安装命令:
sudo apt install kdiff3配置Git使用:
git config --global difftool.kdiff3.path /usr/bin/kdiff3 git config --global difftool.prompt false调用命令:
git difftool -d -t kdiff3 branch123DiffMerge:跨平台工具,支持双向/三方对比,合并操作简单,提供可视化冲突解决界面。可通过Deb包安装,配置Git时指定其安装路径即可。
Sublime Merge:付费工具(提供试用),界面美观,深度集成Git功能,支持分支对比、一键合并更改,适合习惯Sublime编辑器的用户,安装后Git会自动识别该工具。
内容的提问来源于stack exchange,提问作者Ruwan Liyanage
相关产品推荐
相关产品推荐

