Ubuntu 22.04 安装 LibreTranslate 1.9.6 指南
Ubuntu 22.04 从零安装 LibreTranslate 1.9.6:venv+pip 在线直装与离线 wheels 双方案、语言模型下载实测(14 包 1.9GB 约 2 分钟)、systemd 托管与排障实录。
Ubuntu 22.04 安装 LibreTranslate 1.9.6 指南
目标:在 Ubuntu 22.04 服务器上从零安装 LibreTranslate 1.9.6,采用 venv + pip 直装 + systemd 托管的生产形态,覆盖语言模型下载(耗时与磁盘占用的真实数据)、离线 wheels 备用方案与排障实录。已在 Ubuntu 22.04 (x86_64, 6 核 / 18GB 内存) 实测通过,全文命令与回显均为实测记录。
一、环境信息
本文实测环境(真实服务器视角):
- 操作系统:Ubuntu 22.04.5 LTS(x86_64)
- 硬件:6 核 CPU / 18GB 内存 / 295GB 磁盘
- Python:系统自带 Python 3.10.12
- 软件版本:LibreTranslate 1.9.6(当前最新稳定版,2026-10-28 实查 PyPI)
- 部署形态:venv 隔离安装 + systemd 托管,服务监听 5000 端口
- 安装目录:
/opt/libretranslate(venv 所在),语言模型目录:~/.local/share/argos-translate - 网络环境:国际网络直连缓慢,代理
192.168.1.62:7897实测可用(见 4.3 与 8.1 的降级说明)
核对命令与回显:
cat /etc/os-release | head -2
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
python3 --version
Python 3.10.12
💡 技术拓展:Python 多版本共存时,venv 是隔离第三方依赖的标准做法——在虚拟环境目录内生成一套独立的
python/pip,安装的包只作用于该环境,不污染系统 site-packages。同类方案对比:venv(官方内置、轻量,本文采用)、virtualenv(第三方、兼容老 Python)、conda(科学计算生态、体积大)、pipx(面向 CLI 应用隔离)、系统 pip 直装(易与 apt 管理的 Python 包冲突,Ubuntu 22.04 的 pip 会提示 PEP 668 externally-managed 限制)。LibreTranslate 官方支持 Python >=3.8,Ubuntu 22.04 自带 3.10 正合适。
二、前置条件
安装 LibreTranslate 前需要确认以下条件:
- 服务器可访问外网(下载 pip 包与语言模型),或已备好离线包(方案 B);
- Python 3.8+ 与 venv 模块(Ubuntu 22.04 需显式安装
python3-venv); - 基础工具:curl(健康检查)、jq(JSON 格式化,可选)、sqlite3(查看 API Key 库,可选);
- 磁盘空间:按需规划语言模型占用——本文实测 8 种语言(14 个语言对)占 1.9GB,单个语言对模型 82MB–302MB 不等(见 4.4);
- root 或具备 sudo 权限的账号(本文以 root 演示)。
安装前置依赖:
apt-get update -qq
apt-get install -y -qq python3-venv python3-pip curl jq sqlite3
Extracting templates from packages: 100%
Preconfiguring packages ...
⚠️ 说明:
python3 -m venv /tmp/vtest验证 venv 模块可用(生成成功即 OK,验证后删除):
python3 -m venv /tmp/vtest && echo VENV_OK && rm -rf /tmp/vtest
VENV_OK
pip3 --version
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
三、版本选型说明
| 版本 | 发布时间(PyPI) | 说明 |
|---|---|---|
| 1.9.6 | 2026-05-27 | 当前最新稳定版,本文选型。GitHub Releases 对应标签 v1.9.6(变更:土耳其语界面等) |
| 1.9.4 | 较早 | 修复文件翻译(PR #948) |
| 1.9.0 | 较早 | 移除 pytorch、stanza 依赖(PR #938),推理栈更轻;引入语言变体回退 |
| 1.8.4 | 较早 | 新增 --translation-cache(PR #912);Docker 健康检查(PR #906) |
选型结论:新装直接上 1.9.6(PyPI pip install libretranslate 默认即最新版)。查询到更新版本时,用 pip index versions libretranslate 或 PyPI 页面 https://pypi.org/project/libretranslate/ 复核,不要硬编码旧版本号。版本升级方法见 8.6。
四、在线安装方案(A:venv + pip 直装,推荐)
4.1 方案说明与目录规划
本方案从 PyPI 官方源直装 LibreTranslate 到独立 venv,再由 systemd 托管为常驻服务。目录规划:
| 路径 | 用途 |
|---|---|
/opt/libretranslate | 应用根目录(含 venv、日志、密钥库) |
/opt/libretranslate/venv | Python 虚拟环境 |
~/.local/share/argos-translate/ | 语言模型与包索引(root 用户安装即 root 家目录) |
/etc/systemd/system/libretranslate.service | systemd 服务单元 |
4.2 创建虚拟环境
python3 -m venv /opt/libretranslate/venv
/opt/libretranslate/venv/bin/pip install --upgrade pip -q
/opt/libretranslate/venv/bin/pip --version
pip 26.2.2 from /opt/libretranslate/venv/lib/python3.10/site-packages/pip (python 3.10)
venv 内 pip 已升级到 26.2.2(区别于系统 pip 22.0.2)。
4.3 安装 libretranslate(含网络降级实录)
首次尝试直连 PyPI 官方源(2026-10-28 实测):pip install libretranslate 运行超过 10 分钟仍未完成依赖下载,判定直连不可用。
降级走代理后重试(⚠️ 网络说明:官方 PyPI 源当时直连拉取极慢,改走代理 192.168.1.62:7897,实测 23.6 秒完成;该代理当时可用):
cd /tmp
time /opt/libretranslate/venv/bin/pip install --proxy http://192.168.1.62:7897 libretranslate 2>&1 | tail -6
Successfully built flask-swagger langdetect pysrt
Installing collected packages: pytz, polib, mpmath, lexilang, flatbuffers, expiringdict, commonmark, wrapt, waitress, urllib3, tzlocal, typing-extensions, tqdm, sympy, soupsieve, six, sentencepiece, regex, PyYAML, PyMuPDF, pygments, protobuf, prometheus-client, packaging, numpy, MarkupSafe, lxml, itsdangerous, idna, humanfriendly, filelock, cloudpickle, click, charset-normalizer, chardet, certifi, Babel, async-timeout, werkzeug, rich, requests, redis, pysrt, langdetect, joblib, Jinja2, deprecated, ctranslate2, coloredlogs, beautifulsoup4, apscheduler, sacremoses, onnxruntime, limits, flask, minisbd, flask-swagger-ui, flask-swagger, flask-limiter, argos-translate-lt, argos-translate-files, libretranslate
Successfully installed Babel-2.18.0 Jinja2-3.1.6 MarkupSafe-3.0.4 PyMuPDF-1.28.2 PyYAML-6.0.3 apscheduler-3.11.2 argos-translate-files-1.4.4 argos-translate-lt-1.12.1 async-timeout-5.0.1 beautifulsoup4-4.9.3 certifi-2026.10.23 chardet-7.7.0 charset-normalizer-3.5.2 click-8.5.0 cloudpickle-3.1.2 expiringdict-1.2.2 filelock-4.1.0 flask-2.2.5 flask-babel-3.1.0 flask-limiter-2.6.3 flask-swagger-0.2.14 flask-swagger-ui-4.11.1 flatbuffers-25.12.19 humanfriendly-10.0 idna-3.20 itsdangerous-2.1.2 joblib-1.6.0 langdetect-1.0.9 lexilang-1.0.7 libretranslate-1.9.6 limits-5.8.0 lxml-6.1.3 minisbd-0.9.5 mpmath-1.3.0 numpy-1.26.4 onnxruntime-1.23.2 packaging-23.1 polib-1.1.1 prometheus-client-0.15.0 protobuf-7.36.2 pytz-2026.5 redis-4.4.4 regex-2026.9.29 requests-2.31.0 rich-12.6.0 sacremoses-0.1.1 sentencepiece-0.2.2 six-1.17.0 soupsieve-2.10 sympy-1.14.0 tqdm-4.70.1 typing-extensions-4.16.0 tzlocal-5.4.5 urllib3-2.8.0 waitress-2.1.2 werkzeug-2.3.8 wrapt-2.5.1
real 0m23.585s
user 0m10.789s
sys 0m1.979s
(输出为节选:time 计时行之后略去了部分纯依赖包条目,首尾均为实测原文。)
关键安装结果:
libretranslate-1.9.6:主服务;argos-translate-lt-1.12.1:LibreTranslate 定制版的 Argos Translate 引擎(注意包名带-lt后缀,与社区版argostranslate是同源分支);argos-translate-files-1.4.4:文件翻译支持(docx/pdf/srt 等);ctranslate2-4.8.4:神经网络推理运行时;waitress-2.1.2:生产 WSGI 服务器(--threads参数即作用于它)。
版本复核(libretranslate CLI 不支持 --version 参数,用 pip 元数据查询):
/opt/libretranslate/venv/bin/pip show libretranslate | head -2
Name: libretranslate
Version: 1.9.6
/opt/libretranslate/venv/bin/python3 -c "from importlib.metadata import version; print(version('libretranslate'))"
1.9.6
/opt/libretranslate/venv/bin/libretranslate --version
libretranslate: error: unrecognized arguments: --version
⚠️ 注意:
libretranslate --version在 1.9.6 会直接报unrecognized arguments错误,这不是安装问题。查版本请用上面两种 pip 方式。
4.4 首次启动与语言模型下载(部署期重点)
LibreTranslate 不随软件分发模型。首次启动时检测到已装语言包少于 2 个,会自动从社区 Argos 索引下载语言包后再开始服务——这是部署期最大的耗时与磁盘变量。
启动命令先只指定监听与语言范围(--load-only 限定加载的语言,避免全量下载;此处选 8 种常用语言:英/中/日/韩/德/法/西/俄,对应 14 个语言对模型):
export http_proxy=http://192.168.1.62:7897 https_proxy=http://192.168.1.62:7897
cd /opt/libretranslate
/opt/libretranslate/venv/bin/libretranslate --host 0.0.0.0 --port 5000 --load-only en,zh,ja,ko,de,fr,es,ru
实测下载进度与磁盘占用(另开终端采样 du -sh ~/.local/share/argos-translate/packages/ 与包计数):
| 采样时点 | 已装语言包 | 磁盘占用 |
|---|---|---|
| 约 +45 秒 | 9 个 | 1.1GB |
| 约 +105 秒 | 14 个(全部完成,服务已响应 /health) | 1.9GB |
结论:14 个语言包共 1.9GB,走代理实测约 2 分钟完成下载与安装,随后服务自动开始监听。
模型下载过程的启动日志(用 python3 -u 关闭缓冲后另取一次小规模实测,--load-only en,zh 仅 2 个语言包,日志更完整、便于逐行讲解):
Updating language models
Found 100 models
Keep 2 models
Downloading Chinese → English (1.9) ...
Downloading English → Chinese (1.9) ...
Downloading MiniSBD models
Downloading model: en
Loaded support for 2 languages (2 models total)!
Running on http://0.0.0.0:5000
日志逐行解读:
Updating language models:更新语言包索引(仅当已装包少于 2 个、或带--update-models/--force-update-models启动时才会联网);Found 100 models:社区索引当前共 100 个语言对模型、覆盖 50 种语言(zh与zt分别对应简体zh-Hans与繁体zh-Hant);Keep N models:按--load-only过滤后实际要下载的数量;Downloading Chinese → English (1.9) ...:逐对下载,(1.9)是模型包版本;Downloading MiniSBD models:句子边界切分模型(服务按句子切分送入引擎);Loaded support for N languages:加载完成;Running on http://0.0.0.0:5000:服务就绪。
磁盘占用实测量级(按语言对,du -sh 实测,供容量规划参考):
du -sh ~/.local/share/argos-translate/packages/* | sort -rh | head -5
302M /root/.local/share/argos-translate/packages/translate-es_en-1_9
208M /root/.local/share/argos-translate/packages/translate-en_ru-1_9
166M /root/.local/share/argos-translate/packages/translate-ru_en-1_9
158M /root/.local/share/argos-translate/packages/translate-en_de-1_3
158M /root/.local/share/argos-translate/packages/translate-de_en-1_3
du -sh ~/.local/share/argos-translate/packages/ && du -sh ~/.local/share/argos-translate/index.json
1.9G /root/.local/share/argos-translate/packages/
36K /root/.local/share/argos-translate/index.json
单个语言对模型在 82MB(英→中)到 302MB(西→英)之间;若 --load-only 不加限制,首次启动会尝试下载全部 100 个语言对,磁盘需按 15GB+ 预估——生产环境强烈建议显式 --load-only。
验证服务已就绪(新终端):
curl -s http://127.0.0.1:5000/health
{"status":"ok"}
⚠️ 注意:如果 shell 里导出过
http_proxy/https_proxy环境变量,本机 curl 会被劫持到代理导致响应为空——本机验证时请取消代理变量,或显式加--noproxy '*'(排障实录见 8.4)。
手动启动验证完成后 Ctrl+C 停止,进入 systemd 托管(模型已落盘,二次启动不再联网下载)。
4.5 已装模型清点(可选)
/opt/libretranslate/venv/bin/argospm list
translate-en_ja
translate-en_de
translate-en_zh
translate-es_en
translate-de_en
translate-ko_en
translate-fr_en
translate-ja_en
translate-en_ko
translate-ru_en
translate-en_es
translate-zh_en
translate-en_fr
translate-en_ru
14 个语言包与 --load-only 设定的 8 语言对应关系:en↔zh、en↔ja、en↔ko、en↔de、en↔fr、en↔es、en↔ru 共 14 个方向。argospm 命令族的完整用法见命令详解篇。
五、离线安装方案(B:wheels 离线包 + 语言包离线迁移)
5.1 方案说明
目标环境完全无法访问外网时,在一台同架构、同 Python 大版本(x86_64 / Python 3.10)的有网机器上用 pip download 备齐全部 wheel 包与语言包,拷贝到内网服务器离线安装。
5.2 在有网机器下载 wheels
mkdir -p /opt/wheels
cd /opt/wheels
time /opt/libretranslate/venv/bin/pip download libretranslate -d /opt/wheels -q
ls /opt/wheels | wc -l
du -sh /opt/wheels
real 0m14.920s
user 0m3.983s
sys 0m0.645s
63
136M /opt/wheels
63 个 wheel、共 136MB(走代理实测 15 秒)。⚠️ 网络说明:pip download 与 pip install 一样支持 --proxy http://192.168.1.62:7897;本文实测网络下直连缓慢、代理可用。
5.3 内网服务器离线安装
把 /opt/wheels 整体拷贝到内网服务器(scp/U 盘均可),然后建 venv 离线安装:
python3 -m venv /opt/libretranslate/venv-offline
time /opt/libretranslate/venv-offline/bin/pip install --no-index --find-links /opt/wheels libretranslate -q
/opt/libretranslate/venv-offline/bin/python3 -c "from importlib.metadata import version; print(version('libretranslate'))"
real 0m10.369s
user 0m8.776s
sys 0m1.470s
1.9.6
--no-index 禁用一切远端源、只从 --find-links 本地目录取包,10 秒装完。验证 CLI 可用:
/opt/libretranslate/venv-offline/bin/libretranslate --help 2>&1 | head -3
usage: libretranslate [-h] [--host HOST] [--port PORT]
[--char-limit <number of characters>]
[--req-limit <number>]
5.4 语言模型离线迁移
离线环境无法在首次启动时下载模型。在有网机器上完成一次方案 A 安装(或最小化 --load-only 下载),再把两部分拷贝到内网服务器的相同路径:
- 包索引:
~/.local/share/argos-translate/index.json(36KB); - 语言包:
~/.local/share/argos-translate/packages/整个目录(按需裁剪,只留目标语言对)。
拷贝完成后直接按第七章配置 systemd 启动——启动时已装包数量 ≥2 且未带 --update-models,服务不会发起任何联网请求,直接加载本地语言包(首次启动日志将直接显示 Loaded support for N languages (N models total)! 与 Running on http://...,无 Updating/Downloading 行)。
六、方案对比与选择建议
| 维度 | 方案 A:venv + pip 在线 | 方案 B:wheels 离线包 |
|---|---|---|
| 是否需联网 | 安装期需(PyPI + Argos 索引) | 安装期零联网 |
| 安装耗时(本文实测) | 23.6s(代理)+ 模型约 2 分钟 | 有网侧 15s 下载;内网侧 10.4s 安装 |
| 版本新鲜度 | 默认最新稳定版 | 冻结在制作离线包当日版本 |
| 升级方式 | pip 直接升级 | 重新制作离线包 |
| 适用 | 可出网的常规服务器 | 内网隔离 / 合规环境 |
选择建议:能出网选 A(省事、版本新);内网/合规环境选 B,且离线包与语言包一次性备齐。两方案的 systemd 配置完全一致(第七章)。
七、配置说明与 systemd 托管
7.1 服务单元文件
创建 /etc/systemd/system/libretranslate.service:
[Unit]
Description=LibreTranslate Translation API
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/libretranslate
ExecStart=/opt/libretranslate/venv/bin/libretranslate --host 0.0.0.0 --port 5000 --load-only en,zh,ja,ko,de,fr,es,ru --threads 4
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
逐项说明:
After=network.target:网络就绪后再启动;User=root:演示环境用 root;生产建议建独立系统用户(模型目录随之变为该用户的~/.local/share/argos-translate);WorkingDirectory=/opt/libretranslate:相对路径(如 API Key 库默认db/api_keys.db)都以它为基准;ExecStart:venv 内的绝对路径 CLI;--host 0.0.0.0对外监听(默认 127.0.0.1 仅本机);--load-only与 4.4 实测保持一致;--threads 4为 HTTP 工作线程数(作用于 waitress,默认 4);Restart=on-failure+RestartSec=5:异常退出 5 秒后自动拉起;- 所有 CLI 参数都有对应的
LT_前缀环境变量(如LT_PORT=5000),systemd 中可用Environment=注入,详见配置参数详解篇。
7.2 启动与开机自启
systemctl daemon-reload
systemctl enable libretranslate
Created symlink /etc/systemd/system/multi-user.target.wants/libretranslate.service → /etc/systemd/system/libretranslate.service.
systemctl start libretranslate
7.3 验证
systemctl is-active libretranslate
active
systemctl status libretranslate --no-pager -l
● libretranslate.service - LibreTranslate Translation API
Loaded: loaded (/etc/systemd/system/libretranslate.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2026-10-28 13:09:03 UTC; 8s ago
Main PID: 4240 (libretranslate)
Tasks: 12 (limit: 2932)
Memory: 66.7M
CPU: 618ms
(输出节选:略去 CGroup 明细与日志行。)服务重启到可响应的实测耗时:模型已在本地时约 2–6 秒(轮询 /health 实测 READY at +2s);启动初期 Memory 约 67MB,翻译请求发生后按需加载模型内存增长至约 200–260MB(systemctl status 的 Memory 字段与 /proc/<PID>/status 的 VmRSS 实测)。
端到端验证:
curl -s http://127.0.0.1:5000/health
{"status":"ok"}
curl -s http://127.0.0.1:5000/languages | jq -r ".[].code" | tr "\n" " "; echo
en zh-Hans fr de ja ko ru es
8 种语言(14 个语言对)与 --load-only 完全一致;对外服务器可用 http://<服务器IP>:5000/ 访问 Web 翻译界面与 API。
八、常见问题(FAQ)
8.1 pip 安装/模型下载极慢或卡住
现象:直连 PyPI 时 pip install libretranslate 超过 10 分钟无进展;argospm update/首次启动的模型下载同样可能卡住。
定位:国际网络到 PyPI 与 Argos 索引(raw.githubusercontent.com / argos-net.com)链路差。
解决:走代理(本文实测可用渠道:http://192.168.1.62:7897):
pip install --proxy http://192.168.1.62:7897 libretranslate # pip 安装
export http_proxy=http://192.168.1.62:7897 https_proxy=http://192.168.1.62:7897 # 模型下载(requests 库识别该变量)
完全无外网则走第五章离线方案。
8.2 启动时出现 RequestsDependencyWarning
现象:每次启动 CLI 都打印:
/opt/libretranslate/venv/lib/python3.10/site-packages/requests/__init__.py:109: RequestsDependencyWarning: urllib3 (2.8.0) or chardet (7.7.0)/charset_normalizer (3.5.2) doesn't match a supported version!
warnings.warn(
定位与结论:libretranslate 1.9.6 对 requests/urllib3/chardet 版本区间的声明与最新依赖版本不完全匹配产生的警告,1.9.6 实测不影响任何功能(健康检查、翻译、文件翻译均正常)。可忽略;强迫症可在 venv 内固定旧版依赖消除,但无必要。
8.3 libretranslate --version 报 unrecognized arguments
见 4.3:1.9.6 不支持该参数,用 pip show libretranslate 或 importlib.metadata 查版本。
8.4 设了代理后本机 curl 返回空响应
现象:导出 http_proxy/https_proxy 后,curl http://127.0.0.1:5000/health 返回空(模型下载脚本里轮询就绪时会误判服务未起)。
定位:curl 会把含 127.0.0.1 的请求也交给代理,代理无法回源到本机回环。
解决:本机验证取消代理变量,或显式绕过:
curl -s --noproxy '*' http://127.0.0.1:5000/health
{"status":"ok"}
8.5 --load-only 写了不存在的语言码
实测结论分两种情况:
- 语言包已装齐(≥2 个)时启动:无效码被静默忽略,服务正常起来(实测
--load-only en,xx正常监听),无效码只是匹配不到任何语言; - 带
--update-models启动(走模型安装校验路径)时:报错并继续启动:
Updating language models
Found 100 models
Cannot update models (normal if you're offline): Unavailable language codes: xx.
Running on http://0.0.0.0:5008
语言码请用 /languages 端点返回的代码(如 zh-Hans、zh-Hant、en)。
8.6 升级与多版本管理
升级到新版(先看 Release Notes 确认无破坏性变更):
/opt/libretranslate/venv/bin/pip install --proxy http://192.168.1.62:7897 --upgrade libretranslate
systemctl restart libretranslate
语言模型如需同步更新,可带 --update-models 启动一次(更新索引并升级已装语言包),或 --force-update-models 强制重装。多版本共存:再建一个 venv(如 /opt/libretranslate/venv-1.8.4)用 pip install libretranslate==1.8.4 装旧版,systemd 单元里切换 ExecStart 路径即可。
8.7 内存占用评估
实测(8 语言 14 语言对):启动初期约 67MB;空闲常驻约 120MB(VmRSS);翻译发生后按需加载模型内存涨到约 200–260MB。生产按「每并发翻译语言对 × 数百 MB」预估,2GB 内存小机型跑 4–8 个语言对足够。更细的参数(线程/限流/缓存)见配置参数详解篇。
九、卸载与清理
# 停止并注销服务
systemctl stop libretranslate
systemctl disable libretranslate
rm -f /etc/systemd/system/libretranslate.service
systemctl daemon-reload
# 删除应用目录(venv 与日志)
rm -rf /opt/libretranslate
# 删除语言模型与索引(root 用户)
rm -rf ~/.local/share/argos-translate
rm -rf ~/.local/cache/argos-translate
验证无残留:
systemctl list-units --all | grep libretranslate; ls /opt/libretranslate ~/.local/share/argos-translate 2>&1
ls: cannot access '/opt/libretranslate': No such file or directory
ls: cannot access '/root/.local/share/argos-translate': No such file or directory
(systemctl list-units 已无 libretranslate 条目输出。)
十、参考链接
- PyPI 包页(版本核对):https://pypi.org/project/libretranslate/
- GitHub 仓库:https://github.com/LibreTranslate/LibreTranslate
- GitHub Releases:https://github.com/LibreTranslate/LibreTranslate/releases
- 官方文档站(Quickstart):https://docs.libretranslate.com/
- Argos Translate 上游:https://github.com/argosopentech/argos-translate
- 本系列:《LibreTranslate 介绍与选型指南》、《LibreTranslate 1.9.6 配置参数详解》、《LibreTranslate 1.9.6 常用 CLI 命令详解》