终版实测!CentOS 7.9(glibc 2.17)升级 Go 1.24.4 编译 Ollama 0.13.3,4 张 L4 GPU 满血运行~
发表于:2025-12-16 | 分类: IT
字数统计: 1.1k | 阅读时长: 5分钟 | 阅读量:

🔥 作为坚守 CentOS 7.9 的运维 / 开发者,谁懂啊!官方 Ollama 二进制包直接报错「GLIBC_2.27 not found」,而系统 glibc 2.17 根本没法升级(怕崩系统)😫 但 4 张 NVIDIA L4 GPU(总计 96GB 显存)不能浪费,非要在原生环境跑 Ollama 部署大模型,于是硬着头皮走 Go 编译路线,过程踩遍坑,现在整理成保姆级教程,造福同款老系统用户!

📌 核心背景:为啥非要自己动手?

  • 系统限制:CentOS 7.9 默认 glibc 2.17,官方 Ollama 所有版本都依赖 glibc≥2.27,直接运行必报错;

  • 硬件刚需:4 张 L4 GPU 想最大化算力,原生编译比 Docker 少虚拟化损耗,多卡并行更高效。

  • 无替代方案:社区无适配 glibc 2.17 的 Ollama 预编译包,只能源码编译定制。

🛠️ 全程实操(按自身路径调整)

1️⃣ 升级 Go 到 1.24.4(编译 Ollama 的前提,不同用户路径不同,务必自查!)

  • 卸载旧 Go(示例路径,替换成自己的!):
1
2
rm -rf /share/opt/go  # 我之前装的Go 1.18.2路径
sed -i '/\/share\/opt\/go\/bin/d' ~/.bashrc
  • 下载 Go 1.24.4(阿里云镜像,稳定不翻车):
1
2
3
wget https://mirrors.aliyun.com/golang/go1.24.4.linux-amd64.tar.gz

tar -C /usr/local -xzf go1.24.4.linux-amd64.tar.gz
  • 配置 Go 环境变量(全局生效):
1
vi /etc/profile

新增以下内容:

1
2
3
4
export GOROOT=/usr/local/go
export PATH=$GOROOT/bin:$PATH
export GOPATH=$HOME/go
export GOPROXY=https://mirrors.aliyun.com/goproxy/,direct # 国内代理避坑

保存并退出(ESC, shift + ;, wq, 回车),使配置生效:

1
source /etc/profile
  • 验证:go version 输出 go1.24.4 linux/amd64 即成功。

2️⃣ 下载 Ollama 0.13.3 源码包(无需 git,解压即编译)

  • 下载源码:wget https://github.com/ollama/ollama/archive/refs/tags/v0.13.3.tar.gz

  • 解压进入目录:

1
2
3
4
tar -zxvf v0.13.3.tar.gz

# 看清解压后的目录名再进入
cd ollama-0.13.3

3️⃣ 编译 Ollama 0.13.3(适配 glibc 2.17 核心参数)

  • 配置编译环境变量(静态编译,规避 glibc 版本问题):
1
2
3
4
5
export CGO_ENABLED=1
export CGO_CFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 -m64 -Wl,--hash-style=gnu -Wl,--as-needed"
export CGO_LDFLAGS="-lrt -lm -ldl -Wl,--disable-new-dtags -Wl,--rpath=/lib64"
export GOFLAGS="-buildmode=pie -trimpath"
export CC="gcc -static-libgcc -static-libstdc++"
  • 执行编译(0.13.3 主入口在根目录 main.go,别写错!):
1
go build -ldflags "-s -w -linkmode=external -extldflags '-static-libgcc -static-libstdc++ -lm -ldl'" -o ollama ./main.go
  • 验证:./ollama --help 无 GLIBC 报错,将二进制移到系统路径:cp ./ollama /usr/local/bin/,或将当前路径加入环境变量(我选择的后者:/share/tools/ollama-0.13.3)。

4️⃣ 配置开机自启(后台稳跑,省心!)

  • 创建 systemd 服务文件:vi /etc/systemd/system/ollama.service,写入:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[Unit]

Description=Ollama Service

After=network.target

[Service]

Type=simple

User=root

# 绑定4张L4 GPU,开启TensorRT加速

Environment="CUDA_VISIBLE_DEVICES=0,1,2,3"

Environment="OLLAMA_TENSORRT=1"

# 自定义模型存放路径,避免占满/root

Environment="OLLAMA_MODELS=/share/public_db/ollama/models"

ExecStart=/share/tools/ollama-0.13.3/ollama serve

Restart=on-failure

[Install]

WantedBy=multi-user.target
  • 生效配置:systemctl daemon-reload && systemctl enable --now ollama

  • 验证服务:systemctl status ollama 显示active(running)即可。

5️⃣ 环境变量 + 模型路径优化(长期使用必备)

  • 全局配置(/etc/profile 新增):
1
2
3
4
5
export OLLAMA_MODELS=/share/public_db/ollama/models

export OLLAMA_TENSORRT=1

export GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
  • 生效:source /etc/profile

  • 模型路径权限(必做!):

1
2
3
4
5
mkdir -p /share/public_db/ollama/models

chmod 755 /share/public_db/ollama/models

chown -R root:root /share/public_db/ollama/models
  • 测试:ollama pull llama3:8b,模型自动存到/share/public_db/ollama/models,验证路径生效。

✅ 最终成果

  • 环境:CentOS 7.9(glibc 2.17)+ Go 1.24.4 + Ollama 0.13.3(原生编译);

  • 硬件:4 张 L4 GPU 满负载运行,llama3:70b(INT4 量化);

  • 稳定性:开机自启无故障,TensorRT 加速加持,延迟大幅降低。

🚨 关键避坑点

  1. Go 路径:不同用户安装位置不同,用which go自查,确保 PATH 优先指向 Go 1.24.4;

  2. 编译路径:Ollama 0.13.3 主入口是./main.go,别用./cmd/ollama(报目录不存在);

  3. 权限:模型路径必须提前赋权,否则拉取模型提示权限拒绝;

  4. 加速:L4 GPU 开启 OLLAMA_TENSORRT=1,推理效率提升 30%+。

老系统也能拿捏大模型!Go 1.24.4+Ollama 0.13.3 这套组合,完美适配 CentOS 7.9,4 张 L4 GPU 终于物尽其用~ 转发给同处境的朋友,少走弯路!🚀

#CentOS7 #Ollama0.13.3 #Go1.24.4 #glibc2.17 #源码编译 #NVIDIA L4 #大模型部署

下一篇:
加装 GPU 后 IB 网卡(ib0)消失?CentOS 7 自动恢复教程(亲测有效)