V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
stuliren
V2EX  ›  程序员

低 glibc 版本服务器,有没有办法用 AI?

  •  
  •   stuliren · 93 天前 · 4466 次点击
    这是一个创建于 93 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在我用的服务器里装的 glibc 版本比较低,也没办法升级,甚至不联网……一直使用的是 VS Code 的 Remote SSH 连接到上面开发。之前用一些手段绕过了 VSCode 的 glibc 版本检测,活是能干,但是 AI 只能选择 copilot ,用免费的 2000 次补全。Trae 这种连上了也用不了 AI 。因此想请教版里的大家有没有可能的办法?

    第 1 条附言  ·  92 天前
    总结一下,大家说的大概就是用容器了。docker 可能不行,因为没有权限。我试试别的容器
    我其实已经用 elf patch 的方案解决了连接问题,但 ai 服务器就没法绕过去了…
    我甚至办法自己编译(,因为 cmake 的版本太低了…
    47 条回复    2025-06-25 00:30:36 +08:00
    psllll
        1
    psllll  
       93 天前 via Android
    docker
    coldle
        2
    coldle  
       93 天前 via Android
    挠头,所以 copilot 的问题是啥,次数太少?
    guoer
        3
    guoer  
       93 天前
    没办法,docker 也是用宿主机的 glibc
    guo4224
        4
    guo4224  
       93 天前 via iPhone
    容器虚拟机
    ronen
        5
    ronen  
       93 天前
    2000 次用完能不能付费继续用?
    stuliren
        6
    stuliren  
    OP
       92 天前
    @coldle 对……,没有学生优惠之类的,还是想找点便宜的方法
    stuliren
        7
    stuliren  
    OP
       92 天前
    @ronen 看来只能充钱了……
    stuliren
        8
    stuliren  
    OP
       92 天前
    @psllll @guoer @guo4224 甚至用不了容器,因为没有管理员权限……
    sduoduo233
        9
    sduoduo233  
       92 天前 via Android
    @stuliren 可以用 proot 容器 不用 root
    zhongplusplus
        10
    zhongplusplus  
       92 天前
    虽然无法想明白为什么 AI 和 glibc 会有关系,但是也许你可以试一试 LD_LIBRARY_PATH, 或者 unshare 相关的方向。
    openmynet
        11
    openmynet  
       92 天前
    @zhongplusplus 本地向量存储甚至本地 embeding 都会用到原生应用/原生 node 库,不是所有事情都能靠纯 js 来解决的。
    imzcc
        12
    imzcc  
       92 天前
    https://github.com/MikeWang000000/vscode-server-centos7
    可以试试这个 patch vscode-server 以支持低版本的 glibc
    zhongplusplus
        13
    zhongplusplus  
       92 天前
    @openmynet 那换个思路是不是重新编译 node 就行了?
    yarawen
        14
    yarawen  
       92 天前
    我把 vs code 的自动更新设置关闭,用 1.98.2 版本。
    这是 agent 前的最后一个版本。
    同时也是 glibc 兼容的最后一个版本。
    sjkdsfkkfd
        15
    sjkdsfkkfd  
       92 天前
    本地开发,用 devcontainer
    Shatyuka
        16
    Shatyuka  
       92 天前 via iPhone
    @guoer 真的假的,第一次听说
    ZeekChatCom
        17
    ZeekChatCom  
       92 天前
    @guoer 真的假的,第一次听说。

    我的一个 nodejs 项目,在宿主机编译不过,因为 glibc 版本太低。换成容器通过了呀。
    hefish
        18
    hefish  
       92 天前
    买一台新服务器吧。。。 花点钱。。。哪怕花点。。。 应该也不是很贵。。。
    liyafe1997
        19
    liyafe1997  
       92 天前
    @guoer 并不是,只是用宿主的内核,docker 容器是有自己完整的 rootfs 的,包括 glibc 在内。
    举个例子,你在 docker 里面跑 alpine linux ,里面 userspace 用的是 musl
    sn0wdr1am
        20
    sn0wdr1am  
       92 天前
    docker 封装 ssh ,然后使用监听另外一个端口,新建一个 ssh 服务。

    这样用 vscode 远程连接上去,是否可行?
    284716337
        21
    284716337  
       92 天前 via Android
    不要随意动系统的 glibc ,血的教训😂编译了单独放个目录,设置环境变量
    tinybaby365
        22
    tinybaby365  
       92 天前   ❤️ 1
    可以用 docker ,docker 容器和 host 共享内核,但可以有自己的 glibc ;
    如果系统无法安装 docker ,可以用 chroot ,把某个 docker image 的基础 rootfs 解出来,chroot 进去使用;
    最坏的情况是 kernel 版本太低,你的 glibc 不兼容内核,这种情况一般人遇不到;
    没事不要升级系统的 glibc ,但可以自己编译安装 glibc 到/opt/glibc-xxx/下面,用 LD_LIBRARY_PATH 指定/opt/glibc-xxx/lib ,让你的程序优先用这个 glibc (不确定是否要 patch ELF 文件的 interpreter )
    jc89898
        23
    jc89898  
       92 天前
    你自己搞个静态编译的不就完事了
    flyqie
        24
    flyqie  
       92 天前 via Android   ❤️ 2
    @guoer #3

    docker 为什么会用宿主机的 glibc ??
    Trim21
        25
    Trim21  
       92 天前 via Android
    你 glibc 具体什么版本啊
    stuliren
        26
    stuliren  
    OP
       92 天前
    @Trim 2.7 ?
    sir283
        27
    sir283  
       92 天前
    AI 怎么跟 GLIBC 扯上关系的?你的 AI 组件如果依赖高版本 GLIBC ,那你就要重新基于现在环境编译一份组件出来,我不清楚 op 是前端开发,还是怎么,如果是前端开发,那就 rebuild 一份 nodejs 就行了,很简单的。
    linhua
        28
    linhua  
       92 天前
    nix 包管理器 或者 junest(基于 arch 的) ,推荐 nix 。如果机器性能足够,还可以用 gentoo prefix ( https://wiki.gentoo.org/wiki/Project:Prefix)
    stevenshum
        29
    stevenshum  
       92 天前
    @284716337 glibc 自定义目录安装后,好像很多软件也不适用
    nkidgm
        30
    nkidgm  
       92 天前
    不对啊,docker 不就是把一切需要的依赖统一打包到镜像里的么,就好像 CentOS 7 的镜像,正常官方都会把 7 对应的 glibc 的二进制文件放进去镜像吧。如果不这样,镜像还分 CentOS 7 CentOS 8 CentOS 9 就没意义了。
    zx900930
        31
    zx900930  
       92 天前
    如果只要求运行的时候无需 root 权限,rootless podman/rootless docker 就解决了,缺点是安装的时候需要 root 。
    完全没有 root 权限的话,可以 patch elf ,要是这也解决不了,那么自己拉源码编译吧。
    nkidgm
        32
    nkidgm  
       92 天前
    不过有一种特殊情况需要注意的,就是那种体积非常小的镜像,那种真有可能是用宿主机,他们那种镜像为了追求极致轻量化,很多时候都直接映射宿主机的库文件,所以如果要追求兼容性,最好是用那种常见的打包好一定依赖的发行版,所以我部署 docker 应用,一般不用轻量级镜像,而是转用传统的 ubuntu ,centos 的镜像。
    Trim21
        33
    Trim21  
       91 天前 via Android
    @sir283 这里说的其实是 vscode remote server 有 glibc 版本要求……
    DefoliationM
        34
    DefoliationM  
       91 天前 via Android   ❤️ 2
    楼上怎么有个人不懂装懂,docker 怎么可能用宿主机的 glibc ,docker 就是用来解决这问题的。
    lsearsea
        35
    lsearsea  
       91 天前 via Android
    @DefoliationM 确实,我就是用 docker 容器来编译低版本 linux 的 go 程序
    Biem
        36
    Biem  
       91 天前
    没太懂 op 的需求。我们也是内网开发,用的是 Continue 和 Codegeex 这俩插件,Windows 机子上的模型在 Ollama 跑,开发机用的是便携版 VSCode ,服务器上是对应版本的 vscode-server ,已经在在线环境安装好插件了的那种,之后就是 tar 解压一下,remote 插件就连上了
    guoer
        37
    guoer  
       91 天前
    [捂脸] 我理解错了。抱歉
    codgician
        38
    codgician  
       91 天前
    试试 nix 包管理,可以只给当前用户安装(逃
    leokun
        39
    leokun  
       91 天前
    glib 低了,docker 也跑不了的
    yjd
        40
    yjd  
       91 天前
    elf patch 方案用的现成工具还是改代码?对静态不好办,动态的倒是见过有现成工具
    MoeDisk
        41
    MoeDisk  
       91 天前
    如果不能联网、不支持容器、换环境变量不稳定,
    就基本只能说,你想用什么,就是着用你现在低 glibc 版本环境编译,动态不行就静态。
    。反正 linux 嵌入式环境是这样的。
    kero991
        42
    kero991  
       91 天前
    你这到底是多低的 glibc ,还能比 ubuntu18 的 2.27 还低吗? rh 系的 rocky8 是 glibc2.28 ,可是有 gcc-14 ,clang19 ,cmake3.26 的,而且 cmake 下载 4.x 也是能用的。
    nevermoreluo
        43
    nevermoreluo  
       91 天前
    @Biem 大概是一个月前吧,最新版的 vs 的 remote 不支持低版本的 glibc 了,导致远程时,插件自动初始化 vs-server 会 error ,说 glibc 太低

    @stuliren 官方给的方案也只有退到低版本( 1.97 好像就行)的 vs 上其实。。。。或者换个 ubuntu24 之类的服务器吧 0 0
    有同事说有偏方说新建一个`/tmp/vscode-skip-server-requirements-check`空文件可破,但是我没试过
    kero991
        44
    kero991  
       91 天前
    如果没权限,试试 proot ?
    xuwen
        45
    xuwen  
       90 天前
    @guoer 并不是,我就曾是试过在低版本的 centos 上开 docker 容器编译需求高版本的项目,一点问题都没有
    nooneanyone
        46
    nooneanyone  
       90 天前
    遇事不决就 docker
    ccc1924
        47
    ccc1924  
       69 天前
    @stuliren #8 试试 rootless ,不过如果内核版本太低也不行
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4456 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 05:35 · PVG 13:35 · LAX 22:35 · JFK 01:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.