centos如何在不升级系统的情况下解决高glibc依赖的问题

1、如何在centos7上安装新版的positron?

你遇到的这个错误非常典型,说明 Positron 在你的 CentOS 7 上启动内部后台服务(kallichore / supervisor)失败。
这几乎总是因为 glibc / libstdc++ / libcrypt / libX11 等系统依赖版本太低 —— CentOS 7 的系统库太老,无法运行 Positron 的 Electron + Rust + Kallichore runtime。

  • GLIBC_2.28 not found
  • GLIBCXX_3.4.26 not found
  • libcrypt.so.2: cannot open shared object file
  • libXi.so.6: version not found
  • Segmentation fault (core dumped)

2、解决方案

  • 使用conda新建一个新版的glibc环境
# 激活环境
conda activate positron

# 安装 glibc 包(如果有)
conda install -c conda-forge glibc

# 或者安装 gcc 的完整运行时
conda install -c conda-forge gcc_linux-64 gxx_linux-64
  • 使用 patchelf, 以尝试让程序同时使用 Conda 的 libc 和系统的 ld-linux

最关键的步骤是使用 patchelf --set-interpreter 修改程序的动态链接器路径,这样就能确保程序使用 Conda 环境中完整且匹配的 glibc 2.30,而不是系统的不兼容版本。

cd /data1/qingjian/.positron-server/bin/b13dd1ca4803bc04a4a9165395b589b8caf4ab58/extensions/positron-supervisor/resources/kallichore/

# 备份原文件(安全第一)
cp kcserver kcserver.backup_final

# 1. 修改动态链接器为 Conda 的 ld-linux
patchelf --set-interpreter /data1/qingjian/miniconda3/envs/positron/lib/ld-linux-x86-64.so.2 kcserver

# 2. 设置 RPATH 指向 Conda 的 lib 目录
patchelf --set-rpath /data1/qingjian/miniconda3/envs/positron/lib kcserver

# 3. 验证修改结果
patchelf --print-interpreter kcserver
patchelf --print-rpath kcserver
  • 验证配置是否正确
ldd kcserver

#输出类似下面的内容
linux-vdso.so.1 =>  (0x00007ffda9fb2000)
libm.so.6 => /data1/qingjian/miniconda3/envs/positron/lib/libm.so.6 (0x00007f6e30b11000)
libpthread.so.0 => /data1/qingjian/miniconda3/envs/positron/lib/libpthread.so.0 (0x00007f6e308f5000)
libc.so.6 => /data1/qingjian/miniconda3/envs/positron/lib/libc.so.6 (0x00007f6e30527000)
libdl.so.2 => /data1/qingjian/miniconda3/envs/positron/lib/libdl.so.2 (0x00007f6e30323000)
/data1/qingjian/miniconda3/envs/positron/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f6e31540000)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容