1、如何在centos7上安裝新版的positron?
你遇到的這個(gè)錯(cuò)誤非常典型,說(shuō)明 Positron 在你的 CentOS 7 上啟動(dòng)內(nèi)部后臺(tái)服務(wù)(kallichore / supervisor)失敗。
這幾乎總是因?yàn)?glibc / libstdc++ / libcrypt / libX11 等系統(tǒng)依賴版本太低 —— CentOS 7 的系統(tǒng)庫(kù)太老,無(wú)法運(yùn)行 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新建一個(gè)新版的glibc環(huán)境
# 激活環(huán)境
conda activate positron
# 安裝 glibc 包(如果有)
conda install -c conda-forge glibc
# 或者安裝 gcc 的完整運(yùn)行時(shí)
conda install -c conda-forge gcc_linux-64 gxx_linux-64
- 使用 patchelf, 以嘗試讓程序同時(shí)使用 Conda 的 libc 和系統(tǒng)的 ld-linux
最關(guān)鍵的步驟是使用 patchelf --set-interpreter 修改程序的動(dòng)態(tài)鏈接器路徑,這樣就能確保程序使用 Conda 環(huán)境中完整且匹配的 glibc 2.30,而不是系統(tǒng)的不兼容版本。
cd /data1/qingjian/.positron-server/bin/b13dd1ca4803bc04a4a9165395b589b8caf4ab58/extensions/positron-supervisor/resources/kallichore/
# 備份原文件(安全第一)
cp kcserver kcserver.backup_final
# 1. 修改動(dòng)態(tài)鏈接器為 Conda 的 ld-linux
patchelf --set-interpreter /data1/qingjian/miniconda3/envs/positron/lib/ld-linux-x86-64.so.2 kcserver
# 2. 設(shè)置 RPATH 指向 Conda 的 lib 目錄
patchelf --set-rpath /data1/qingjian/miniconda3/envs/positron/lib kcserver
# 3. 驗(yàn)證修改結(jié)果
patchelf --print-interpreter kcserver
patchelf --print-rpath kcserver
- 驗(yàn)證配置是否正確
ldd kcserver
#輸出類似下面的內(nèi)容
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)