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)