Ollama在Linux上安装的详细记录

在Linux系统下使用普通用户安装Ollama并部署指定模型的完整步骤,所有操作都在用户目录下进行,无需root权限。

对于个人或小团队,还处在研究探索阶段,资源和权限隔离的情况下,强烈建议参照本教程。

一、环境准备

1.1 检查NVIDIA驱动和CUDA

复制代码
# 检查显卡驱动
nvidia-smi

# 检查CUDA版本(RTX 5090需要CUDA 12.0+)
nvcc --version

对于使用 Ollama 部署模型的核心目标,CUDA Toolkit 不是必须的;

nvidia-smi信息来看,系统已安装 NVIDIA 驱动程序 580.142,其中包含 CUDA 驱动 13.0。这是 GPU 能够被识别和用于计算(如模型推理)的基础运行时环境。Ollama 在运行时依赖的就是这个驱动层。

nvcc是什么:nvcc是 CUDA 编译器,是 CUDA Toolkit 的一部分。它主要用于编译基于 CUDA 的 C/C++ 程序(例如从源码编译某些 AI 框架或库)。对于直接运行已编译好的 Ollama 二进制文件或 Python 包,并不需要 nvcc。

1.2.1 从源码安装Python 3.12

创建并进入一个临时目录:
shell 复制代码
mkdir ~/python-build
cd ~/python-build
下载 Python 3.12 源码:
shell 复制代码
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
tar -xzf Python-3.12.0.tgz
cd Python-3.12.0
配置并指定安装路径到用户目录:
shell 复制代码
./configure --enable-optimizations --prefix=$HOME/.local/python3.12
  • --prefix=$HOME/.local/python3.12是关键,它将安装目录设置为你的用户目录下的.local/python3.12

  • --enable-optimizations是可选的,它会进行一些优化,但会使编译时间变长。如果需要可以去掉。

编译并安装:
shell 复制代码
make -j$(nproc)
make altinstall
  • 使用 altinstall而不是 install,避免覆盖任何现有的 python命令。
将安装目录添加到 PATH:

安装完成后,Python 3.12 的可执行文件位于 $HOME/.local/python3.12/bin。你需要将这个目录添加到你的 PATH环境变量中。对于 bash 用户(通常默认) ,编辑 ~/.bashrc文件:

shell 复制代码
echo 'export PATH="$HOME/.local/python3.12/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
验证安装:
shell 复制代码
python3.12 --version

应该输出 Python 3.12.x

1.2.2 不想折腾的话直接用 Miniconda3

自动解决系统库依赖(如SQLite)------Conda 会在环境内安装预编译好的、包含所有必要依赖的 Python 和库,比Anaconda3轻量。

1.安装并初始化 Miniconda3​
shell 复制代码
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
$HOME/miniconda3/bin/conda init bash
# 然后关闭并重新打开终端,或运行 source ~/.bashrc
2.创建并使用一个 Conda 环境
shell 复制代码
# 创建一个名为 `myenv` 且包含 Python 3.12 的环境
conda create -n myenv python=3.12
# 激活环境
conda activate myenv
# 验证 - 此时 python 命令指向 Conda 环境内的 3.12,且 sqlite3 可用
python -c "import sqlite3; print(sqlite3.sqlite_version)"
# 安装其他包,如 pandas
conda install pandas
3.接受Anaconda的官方软件仓库服务条款

使用 conda 命令创建虚拟环境时出现以下提示:

CondaToSNonInteractiveError: Terms of Service have not been accepted for the following channels. Please accept or remove them before proceeding: - https://repo.anaconda.com/pkgs/main - https://repo.anaconda.com/pkgs/r To accept these channels' Terms of Service, run the following commands:

...

这是在使用Anaconda的官方软件仓库 ​ (repo.anaconda.com/pkgs/mainrepo.anaconda.com/pkgs/r) 时,自2024年底起实施的新政策。为了从这些官方渠道安装软件包,您需要首次使用时手动确认并接受其最终用户许可协议

按照错误提示,在终端中运行以下两条命令来接受相应Channel的条款:

shell 复制代码
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r

1.3 检查系统依赖

bash 复制代码
# 检查基础工具
which curl tar gcc make
# 如果缺少,请使用包管理器安装(需要sudo权限)
# 如无法使用sudo,可跳过,Ollama二进制版不需要编译

1.4 创建用户目录结构

shell 复制代码
# 在用户目录下创建专用目录
mkdir -p ~/apps/ollama

# 模型下载到挂载目录
mkdir -p /mnt/sda/farmers/a/apps/ollama
mkdir -p /mnt/sda/farmers/a/apps/ollama/models
# 手动运行 ollama可以指定存储日志到这里
mkdir -p /mnt/sda/farmers/a/apps/ollama/logs
# 比如:将标准输出和错误都追加到指定日志文件
ollama serve >> /mnt/sda/farmers/a/apps/ollama/logs/ollama.log 2>&1 &

二、安装Ollama

2.1 下载并安装Ollama

shell 复制代码
cd ~/apps/ollama

# 方法1.使用官方 install.sh 脚本,一键安装,但有些沙雕环境不让全局安装,只能用方法2了
curl -fsSL https://ollama.com/install.sh | sh

# 方法2.下载标准版(已包含 CUDA 支持)
wget https://github.com/ollama/ollama/releases/download/v0.23.2/ollama-linux-amd64.tar.zst

# 解压到指定目录
mkdir -p ~/app/ollama
tar --zstd -xvf ollama-linux-amd64.tar.zst -C ~/app/ollama

如果各种办法下载不了 ollama 二进制文件的话,大概率是网络有问题,用官方脚本也够呛能安装,直接从别的机器下载,然后传上去。

2.3 配置环境变量

复制代码
# 编辑bash配置文件
echo 'export PATH="$HOME/apps/ollama/bin:$PATH"' >> ~/.bashrc
echo 'export OLLAMA_MODELS="$HOME/apps/ollama/models"' >> ~/.bashrc
echo 'export OLLAMA_HOST="127.0.0.1:11434"' >> ~/.bashrc

# 如果使用zsh
echo 'export PATH="$HOME/apps/ollama/bin:$PATH"' >> ~/.zshrc
echo 'export OLLAMA_MODELS="$HOME/apps/ollama/models"' >> ~/.zshrc
echo 'export OLLAMA_HOST="127.0.0.1:11434"' >> ~/.zshrc

# 使配置生效
source ~/.bashrc  # 或 source ~/.zshrc

# 验证安装
ollama --version

2.4 ~/.bashrc 中ollama的完整配置

shell 复制代码
# 修改或添加以下行
export PATH="$HOME/apps/ollama/bin:$PATH"
export OLLAMA_MODELS="/mnt/sda/farmers/a/apps/ollama/models"
export OLLAMA_HOST="127.0.0.1:11434"

# 可选:开启调试日志(需要时启用)
# export OLLAMA_DEBUG=1

# 可选:设置日志级别
# export OLLAMA_LOG_LEVEL="info"

# 可选:设置模型在内存中的保留时间(提高响应速度)
# export OLLAMA_KEEP_ALIVE="24h"

# 使配置生效
source ~/.bashrc  # 或 source ~/.zshrc

# 验证
which ollama
# 应该输出:/mnt/sda/farmers/a/apps/ollama/bin/ollama

# 验证安装
ollama --version

2.5 关于 Ollama 日志

情况一:以后台服务方式运行(例如通过 systemd)

这是生产环境推荐的方式,日志由系统服务管理器(如 journald)统一收集。

shell 复制代码
# 查看所有日志(实时滚动)
journalctl -u ollama -f
# 查看最近100行日志
journalctl -u ollama -n 100
# 查看指定时间段的日志
journalctl -u ollama --since "2024-01-01 00:00:00" --until "2024-01-01 12:00:00"

当然,在 systemd配置中也能设置输出日志到哪里,详见:三、配置用户级systemd服务

情况二:在终端前台直接运行

如果在终端中直接执行 ollama serve,日志会直接输出到当前终端

情况三:在后台手动启动

如果使用 ollama serve &nohup等方式在后台启动,日志默认会输出到标准输出(stdout)和标准错误(stderr)。为了不丢失日志,通常会在启动时进行重定向。

shell 复制代码
# 将标准输出和错误都追加到指定日志文件
ollama serve >> /mnt/sda/farmers/a/apps/ollama/logs/ollama.log 2>&1 &
# 使用 `tail`、`cat`等命令查看您指定的日志文件
tail -f /mnt/sda/farmers/a/apps/ollama/logs/ollama.log

三、配置用户级systemd服务(保持后台运行)

3.1 启用用户级systemd

复制代码
# 检查用户级systemd是否可用
systemctl --user status

# 如果报错,启用linger功能(允许用户服务在未登录时运行)
loginctl enable-linger $USER

# 验证
loginctl show-user $USER | grep Linger

3.2 创建systemd服务文件

### 第一步:创建 Systemd 服务配置文件

您需要创建一个用户级的 systemd 服务文件。这个文件定义了服务的启动、停止、重启、日志等行为。

复制代码
# 1. 创建 systemd 用户服务配置目录(如果不存在)
mkdir -p ~/.config/systemd/user/

# 2. 创建并编辑服务配置文件
cat > ~/.config/systemd/user/ollama.service << 'EOF'
[Unit]
Description=Ollama Service (Local User)
Documentation=https://github.com/ollama/ollama
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
# --- 核心配置:执行命令和关键环境变量 ---
# 您的 Ollama 可执行文件路径
ExecStart=%h/apps/ollama/bin/ollama serve
# 工作目录(建议设置为模型所在目录的上级)
WorkingDirectory=/mnt/sda/farmers/a/apps/ollama
# 最重要的环境变量:指定模型存储路径到您的挂载盘
Environment=OLLAMA_MODELS=/mnt/sda/farmers/a/apps/ollama/models
Environment=OLLAMA_HOST=127.0.0.1:11434
Environment=OLLAMA_ORIGINS=*
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 可选的 GPU 优化环境变量(根据您的 RTX 5090 调整)
Environment=OLLAMA_NUM_GPU=1
# 设置日志输出到文件,方便排查
StandardOutput=file:/mnt/sda/farmers/a/apps/ollama/logs/ollama.stdout.log
StandardError=file:/mnt/sda/farmers/a/apps/ollama/logs/ollama.stderr.log
# 重启策略:服务异常退出时自动重启
Restart=on-failure
RestartSec=5s
# 资源限制(可选,防止服务占用过多资源)
# LimitNOFILE=65536
# LimitNPROC=infinity
# LimitMEMLOCK=infinity

[Install]
WantedBy=default.target
EOF

说明

  • 此配置将服务限定在当前用户 下运行,无需 sudo
  • 关键设置 OLLAMA_MODELS环境变量,确保模型下载到指定的挂载盘路径。
  • 将标准输出和错误日志重定向到文件,便于日后排查问题。
第二步:创建日志目录并赋予权限

服务配置中指定了日志输出路径,需要提前创建该目录。

shell 复制代码
# 创建日志目录
mkdir -p /mnt/sda/farmers/a/apps/ollama/logs

# 确保当前用户对该目录有写入权限
chmod 755 /mnt/sda/farmers/a/apps/ollama/logs
第三步:创建管理 Systemd 服务的命令脚本

创建一个便捷的管理脚本,包含启动、停止、状态查看、日志追踪等常用操作。

shell 复制代码
# 创建管理脚本
cat > ~/apps/ollama/ollama-service-manager.sh << 'EOF'
#!/bin/bash
SERVICE_NAME="ollama"
USER_SYSTEMD_DIR="$HOME/.config/systemd/user"
LOG_DIR="/mnt/sda/farmers/a/apps/ollama/logs"

case "$1" in
    start)
        systemctl --user start $SERVICE_NAME
        echo "服务启动命令已发送。查看状态请运行: $0 status"
        ;;
    stop)
        systemctl --user stop $SERVICE_NAME
        echo "服务停止命令已发送。"
        ;;
    restart)
        systemctl --user restart $SERVICE_NAME
        echo "服务重启命令已发送。"
        ;;
    status)
        systemctl --user status $SERVICE_NAME
        ;;
    enable)
        systemctl --user enable $SERVICE_NAME
        echo "服务已设置为开机自启(用户级)。"
        ;;
    disable)
        systemctl --user disable $SERVICE_NAME
        echo "服务开机自启已禁用。"
        ;;
    logs)
        # 查看实时日志
        tail -f $LOG_DIR/ollama.stdout.log $LOG_DIR/ollama.stderr.log
        ;;
    logs-stdout)
        tail -50 $LOG_DIR/ollama.stdout.log
        ;;
    logs-stderr)
        tail -50 $LOG_DIR/ollama.stderr.log
        ;;
    reload)
        # 重载 systemd 配置(修改服务文件后需要执行)
        systemctl --user daemon-reload
        echo "服务配置已重载。"
        ;;
    *)
        echo "用法: $0 {start|stop|restart|status|enable|disable|logs|logs-stdout|logs-stderr|reload}"
        echo ""
        echo "命令说明:"
        echo "  start     : 启动 Ollama 服务"
        echo "  stop      : 停止服务"
        echo "  restart   : 重启服务"
        echo "  status    : 查看服务运行状态"
        echo "  enable    : 启用开机自启(用户登录后自动启动)"
        echo "  disable   : 禁用开机自启"
        echo "  logs      : 实时追踪所有日志"
        echo "  logs-stdout: 查看最近的标准输出日志"
        echo "  logs-stderr: 查看最近的错误日志"
        echo "  reload    : 重载服务配置(修改 .service 文件后必须执行)"
        exit 1
        ;;
esac
EOF

# 赋予管理脚本执行权限
chmod +x ~/apps/ollama/ollama-service-manager.sh

3.3 启动并启用服务

1.使用systemctl管理 Ollama 服务。
shell 复制代码
# 1. 重新加载 systemd 配置,使其识别新的服务文件
systemctl --user daemon-reload

# 2. 启用开机自动启动(可选,推荐)
# 此功能允许在您登录用户账户后自动启动服务
systemctl --user enable ollama

# 3. 立即启动服务
systemctl --user start ollama

# 4. 检查服务状态
systemctl --user status ollama

预期输出 :您应该看到状态显示为 active (running),并且会包含进程 ID 和最近日志片段。

2.使用管理 Systemd 服务的命令脚本
shell 复制代码
~/apps/ollama/ollama-service-manager.sh start
~/apps/ollama/ollama-service-manager.sh stop
~/apps/ollama/ollama-service-manager.sh restart
~/apps/ollama/ollama-service-manager.sh status
~/apps/ollama/ollama-service-manager.sh enable
...

四、配置Ollama的Python 3.12虚拟环境

创建虚拟环境

shell 复制代码
# 创建虚拟环境
python3.12 -m venv ~/apps/ollama/venv

# 激活虚拟环境
source ~/apps/ollama/venv/bin/activate

# 安装Ollama Python客户端
pip install ollama
pip install requests

# 创建一个可以检查当前目录并自动激活虚拟环境的脚本
cat > ~/apps/ollama/activate.sh << 'EOF'
#!/bin/bash
# 激活Ollama虚拟环境
if [ -f ~/apps/ollama/venv/bin/activate ]; then
    echo "正在激活Ollama虚拟环境..."
    source ~/apps/ollama/venv/bin/activate
    echo "✓ Python虚拟环境已激活"
    echo "  Python版本: $(python --version)"
    OLLAMA_VERSION=$(pip show ollama 2>/dev/null | grep Version | awk '{print $2}')
    if [ -n "$OLLAMA_VERSION" ]; then
        echo "  Ollama客户端版本: $OLLAMA_VERSION"
    else
        echo "  Ollama客户端未安装"
    fi
else
    echo "错误: 虚拟环境不存在"
    echo "请先创建虚拟环境: python -m venv ~/apps/ollama/venv"
    exit 1
fi
EOF

chmod +x ~/apps/ollama/activate.sh

# 然后在 `.bashrc`或 `.zshrc`中添加:
alias ollama-activate="source ~/apps/ollama/activate.sh"

# 否则需要用source加载,因为用sh 执行activate.sh命令会新建子进程

本步骤不是必须的,比如只是运行模型服务供其他应用调用;

如果要开发 Python AI 应用 ​ → 需要​ Python 客户端;

五、验证Ollama安装

5.1 检查Ollama服务

shell 复制代码
# 1. 检查 API 端点是否响应
curl http://localhost:11434/api/tags
# 正常响应应为:{"models":[]} (初始状态模型列表为空)

# 2. 检查版本信息
curl http://localhost:11434/api/version
# 会返回 Ollama 的版本信息

# 3. 通过便捷脚本查看日志,确认无报错
~/apps/ollama/ollama-service-manager.sh logs-stderr

5.2 测试GPU识别

shell 复制代码
# ollama run命令后查看运行中的模型,PROCESSOR列包含GPU信息→ GPU 加速已启用
ollama ps
# 输出如下
NAME                      ID              SIZE      PROCESSOR    CONTEXT    UNTIL              
qwen3.5-9b-deepseek:q4    1353482d3919    7.5 GB    100% GPU     8192       3 minutes from now

# 或者观察 GPU 利用率
nvidia-smi

5.3 设置用户级 systemd 守护进程(重要,实现真正后台运行)

默认情况下,用户服务会在您退出登录时停止。若希望服务在后台持续运行 (即使您退出 SSH 登录),需要启用 linger

如果没有sudo权限请忽略。

shell 复制代码
# 启用 linger 功能
sudo loginctl enable-linger $USER
# 验证
loginctl show-user $USER | grep Linger
# 应该显示:Linger=yes

# 之后,您启用(enable)的服务将会在系统启动后自动运行,无需用户保持登录。

六、下载和运行指定模型

6.1 拉取模型(使用INT4量化版节省显存)

shell 复制代码
# 激活Python虚拟环境
# source /mnt/sda/farmers/a/apps/ollama/venv/bin/activate
# 使用上面创建的快捷激活脚本
/mnt/sda/farmers/a/apps/ollama/activate_venv.sh

# 方法1:使用Ollama命令行
/mnt/sda/farmers/a/apps/ollama/ollama pull qwen3:14b
/mnt/sda/farmers/a/apps/ollama/ollama pull yi:14b
# BAGEL(字节跳动多模态模型)
# 注意:Ollama官方库可能没有BAGEL,需要自定义Modelfile,配置见下面的自定义模型配置
ollama pull llava:14b  # 可以先使用类似的视觉模型

# 方法2:使用Python客户端
python -c "
import ollama
models = ['qwen3:14b', 'yi:14b', 'bagel', 'helios']
for model in models:
    print(f'正在拉取 {model}...')
    ollama.pull(model)
    print(f'{model} 拉取完成')
"

# 如果上述不可用,尝试其他标签
~/apps/ollama/ollama pull qwen2.5:14b-instruct-q4_K_M
~/apps/ollama/ollama pull yi:14b-chat-q4_K_M

6.2 自定义模型配置(如官方库没有)

如果Ollama官方库没有或者网络不通,需要手动导入:

1.创建Modelfile
shell 复制代码
# 创建 Modelfile
cat > /mnt/sda/farmers/a/apps/ollama/Modelfile.qwen3.5-9b-deepseek-q4 << 'EOF'
FROM /mnt/sda/farmers/a/apps/ollama/models/Qwen3.5-9B-DeepSeek-V4-Flash-Q4_K_M.gguf

# 模型参数设置
PARAMETER num_ctx 8192
PARAMETER num_batch 512

# 模板设置(Qwen 通常使用 chatml 格式)
TEMPLATE """{{- if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{- end }}
{{- if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{- end }}
<|im_start|>assistant
{{ .Response }}<|im_end|>"""

# 系统提示词
SYSTEM """你是Qwen3.5-9B-DeepSeek-V4-Flash,一个高效推理模型,使用来自 DeepSeek-V4 的高质量数据进行蒸馏得到"""

# 停止标记
PARAMETER stop "<|im_end|>"
PARAMETER stop "<|im_start|>"
EOF
2.导入模型到 Ollama

使用 ollama create命令将 Modelfile 导入为可用的模型:

shell 复制代码
# 确保 Ollama 服务正在运行
sh ~/apps/ollama/ollama-service-manager.sh status

# 导入 Qwen3.5-DeepSeek 模型
ollama create qwen3.5-9b-deepseek:q4 -f /mnt/sda/farmers/a/apps/ollama/Modelfile.qwen3.5-9b-deepseek-q4

# 导入其他模型
ollama create xxxx -f /mnt/sda/farmers/a/apps/ollama/Modelfile.xxxx

导入过程说明

  • 每个命令会读取对应的 Modelfile,将 GGUF 文件注册到 Ollama 的模型库中
  • 这个过程不会重新下载模型,只是建立索引和配置
  • 导入时间取决于文件大小和系统性能,通常几分钟内完成

6.3 运行模型测试

shell 复制代码
# 查看所有可用模型
ollama list

# 查看模型详细信息
ollama show qwen3.5-9b-deepseek:q4

# 测试Qwen3-14B
ollama run qwen3.5-9b-deepseek:q4 "你好,用一句话介绍下深圳"


# 在Python虚拟环境中测试
python -c "
import ollama
response = ollama.chat(model='qwen3.5-deepseek:9B', messages=[
    {'role': 'user', 'content': '你好,用一句话介绍下深圳'}
])
print(response['message']['content'])
"

七、故障排除

7.1 常见问题解决

复制代码
# 1. 端口被占用
# 修改OLLAMA_HOST环境变量
export OLLAMA_HOST="127.0.0.1:11435"

# 2. 权限问题
chmod 755 ~/apps/ollama
chmod 644 ~/apps/ollama/logs/*.log

# 3. 模型下载失败
# 设置代理(如果需要)
export HTTP_PROXY="http://your-proxy:port"
export HTTPS_PROXY="http://your-proxy:port"

# 4. GPU内存不足
# 查看显存使用
nvidia-smi
# 卸载不用的模型
ollama rm 模型名称
# 使用量化版本
/mnt/sda/farmers/a/apps/ollama/ollama pull qwen3:14b-q4_K_M

# 5. 模型下载慢
# 具体见 6.2 自定义模型配置(如官方库没有)
# 使用 modelscope 下载模型
pip install modelscope
# 下载单个文件到指定本地文件夹(以下载README.md到当前路径下"dir"目录为例)
modelscope download --model Jackrong/Qwen3.5-9B-DeepSeek-V4-Flash-GGUF README.md --local_dir ./dir

7.2 查看详细日志

复制代码
# 查看服务日志
journalctl --user -u ollama -f

# 查看应用日志
tail -f ~/apps/ollama/logs/ollama.log

安装完成验证清单

  • Ollama二进制文件已下载到 ~/apps/ollama/

  • 环境变量已配置(~/.bashrc~/.zshrc

  • 用户级systemd服务已配置并运行

  • Python 3.12虚拟环境已创建并激活

  • Ollama Python客户端已安装

  • 模型已开始下载(Qwen3-14B、Yi-1.5-14B、BAGEL、Helios)

  • GPU识别正常

  • 可以通过 curl http://localhost:11434/api/tags访问API

按照以上步骤,您可以在非root用户环境下完整部署Ollama,所有文件都存储在用户目录中,并使用Python 3.12虚拟环境进行管理。

相关推荐
Strugglingler1 小时前
【Linux PL011驱动支持RS485】
linux·uart·rs485·pl011
IT瑞先生1 小时前
Linux系统基础
linux·运维·服务器
modelmd1 小时前
Linux chroot命令
linux
l1t2 小时前
在WSL的ubuntu 26.04容器中用deb安装包安装使用redrock-4.1-1
linux·运维·ubuntu·postgresql
jieyucx2 小时前
Go语言通透教程:结构体定义与方法
服务器·数据库·golang·结构体
renren-1002 小时前
centos7.9 升级openssl11 导致的系统命令瘫痪
linux·运维·服务器
金玉满堂@bj2 小时前
Pytest 完整使用教程
运维·服务器·pytest
SWAGGY..2 小时前
Linux系统编程:(六)编译器gcc/g++
linux·运维·服务器
蜡笔婧萱2 小时前
Linux——Web服务器网址建立(http和https的分离)
linux·运维·服务器