Ubuntu 24.04 安装 witr v0.3.4 指南
在 Ubuntu 24.04 服务器实测安装 witr v0.3.4:官方一键脚本、deb 离线包、手动二进制三方案全程回显,附方案对比、升级卸载与 liblzma 排障实录。
Ubuntu 24.04 安装 witr v0.3.4 指南
目标:在 Ubuntu 24.04 服务器上从零安装 witr v0.3.4(「为什么在跑」进程溯源 CLI),覆盖官方一键脚本、deb 离线包、手动二进制三套实测安装方案,并给出方案对比、升级、卸载与常见问题排障实录。全部命令与回显均在 Ubuntu 24.04.5 LTS(x86_64)真实服务器上实测取得,组件定位与选型背景见本专栏《witr v0.3.4 介绍与选型指南》。
一、环境信息
本文所有命令在以下真实环境中逐条实测,回显为实际输出:
| 项 | 值 |
|---|---|
| 操作系统 | Ubuntu 24.04.5 LTS(内核 Linux x86_64) |
| 目标软件 | witr v0.3.4(2026-10-04 发布,官方最新稳定版,查询日期 2026-10-25) |
| 交付形态 | 单一静态链接二进制(约 7.9 MB,无任何运行时依赖)+ man 手册页 |
| 安装位置 | 方案 A → /usr/local/bin/witr;方案 B → /usr/bin/witr;方案 C → 自定路径 |
| man 页位置 | 方案 A/C → /usr/local/share/man/man1/witr.1;方案 B → /usr/share/man/man1/witr.1 |
| 网络 | GitHub 官方源直连部分域名超时,已按「官方源 → 代理」降级(详见各步骤 ⚠️ 说明) |
| 运行权限 | root(非 root 用户见第七章 INSTALL_PREFIX 免 sudo 用法) |
💡 说明:witr 是纯 CLI 工具,无守护进程、无配置文件、无监听端口,因此不存在 systemd 服务托管环节——安装完成即安装完毕,无需任何启动步骤。
二、前置条件与版本选型
2.1 前置条件
- 一台 Ubuntu 24.04 服务器(22.04/20.04 同样适用,deb 与脚本均兼容 x86_64;arm64 服务器把包名换成
linux-arm64即可); curl与install命令(安装脚本硬依赖,install.sh 第 54-59 行显式检查)——Ubuntu 默认自带curl,若最小化安装缺失则先补装:
apt-get update && apt-get install -y curl
- 磁盘空间:二进制 7.9 MB + man 页 2.3 KB,任意磁盘都无压力;
- (可选)可访问 GitHub 的网络通道:脚本与包都托管在 GitHub Releases,本文实测环境对部分域名需走代理。
2.2 版本选型说明
witr 版本获取以官方 GitHub Releases 为准(查询日期 2026-10-25):
| 渠道 | 版本 | 说明 |
|---|---|---|
| GitHub Releases(脚本/二进制/deb) | v0.3.4 | 官方最新稳定版,本文实测对象 |
| Ubuntu/Debian 官方仓库(apt) | 落后于上游 | README 明确提示 apt 版本可能滞后(Ubuntu 26.04+、Debian sid 起收录),Ubuntu 24.04 的官方仓库暂无此包 |
结论:Ubuntu 24.04 上不应使用 apt 安装(仓库无包),应选本文方案 A/B/C 之一;追新版本一律以 GitHub Releases 的 tag 为准。确认最新版本号的命令(无需访问网页):
curl -fsSL https://api.github.com/repos/pranshuparmar/witr/releases/latest | grep '"tag_name"'
实测回显(走代理环境,直连 api.github.com 超时的环境自行加 https_proxy):
"tag_name": "v0.3.4",
三、在线一键脚本安装方案(A:官方推荐)
3.1 方案说明
官方 install.sh 会自动识别操作系统(linux/darwin/freebsd)与架构(amd64/arm64/loong64),下载最新发布二进制与 man 页并安装到 /usr/local/,全程无需手动选包。这是 README 的首推方式,适合能联网的服务器。
3.2 下载脚本
curl -fsSL -o /tmp/witr-install.sh https://raw.githubusercontent.com/pranshuparmar/witr/main/install.sh
⚠️ 网络说明:本机实测
raw.githubusercontent.com直连超时(curl: (28) Operation timed out),改走代理成功(curl -x http://192.168.1.62:7897)。github.com主站与github.com/.../releases/download/...直连正常。当前实测可用渠道:raw 域名走代理、Releases 下载直连,两条路都保留在命令里。
代理环境下的实测下载:
curl -fsSL -x http://192.168.1.62:7897 -o /tmp/witr-install.sh https://raw.githubusercontent.com/pranshuparmar/witr/main/install.sh
wc -l /tmp/witr-install.sh
实测回显:
120 /tmp/witr-install.sh
脚本仅 120 行,可先 less /tmp/witr-install.sh 通读再执行——它只做三件事:探测 OS/架构 → 调 GitHub API 取最新 tag → 下载二进制与 man 页并 install 到目标目录。
3.3 执行安装
脚本内部需要访问 api.github.com 与 Releases 下载,实测环境中为 api.github.com 配置会话级代理变量后执行:
export https_proxy=http://192.168.1.62:7897 http_proxy=http://192.168.1.62:7897
bash /tmp/witr-install.sh
实测回显(节选,进度条行省略):
100 7720k 100 7720k 0 0 10.2M 0 --:--:-- --:--:-- --:--:-- 10.2M
100 2312 100 2312 0 0 4351 0 --:--:-- --:--:-- --:--:-- 4351
witr installed successfully to /usr/local/bin/witr (version: v0.3.4, os: linux, arch: amd64)
Man page installed to /usr/local/share/man/man1/witr.1
3.4 验证安装
ls -la /usr/local/bin/witr /usr/local/share/man/man1/witr.1
witr --version
实测回显:
-rwxr-xr-x 1 root root 7905464 Oct 25 09:25 /usr/local/bin/witr
-rw-r--r-- 1 root root 2312 Oct 25 09:25 /usr/local/share/man/man1/witr.1
witr v0.3.4 (commit 7e46fa68151fd7c59fb7a0cf4247a9a0ac0fbb6e, built 2026-10-04T17:31:44Z)
--version 输出含 commit 哈希与构建时间,即安装生效;man 页可随时 man witr 查阅。
3.5 免 sudo 安装(无 root 权限场景)
脚本支持 INSTALL_PREFIX 覆盖安装前缀(install.sh 第 8-10 行),落到用户目录则全程不需要 sudo,官方 README 给出的推荐形态:
curl -fsSL https://raw.githubusercontent.com/pranshuparmar/witr/main/install.sh | INSTALL_PREFIX="$HOME/.local" bash
安装后二进制位于 ~/.local/bin/witr,确认该目录在 PATH 中即可。非 root 的服务器账号用这条路径最省事。
四、deb 离线包安装方案(B)
4.1 方案说明
官方 Releases 附带按架构打包的 .deb/.rpm/.apk 原生包(本版本共 19 个附件)。deb 包适合内网服务器批量分发与统一用 dpkg 管理升级的场景,安装位置为 /usr/bin/witr,man 页落入系统 man 路径。
4.2 下载与校验
下载 deb 包与官方 SHA256SUMS 清单并校验(离线服务器可先在有网机器下载再拷贝过去):
cd /tmp
curl -fsSL -x http://192.168.1.62:7897 -O https://github.com/pranshuparmar/witr/releases/download/v0.3.4/witr-0.3.4-linux-amd64.deb
curl -fsSL -x http://192.168.1.62:7897 -O https://github.com/pranshuparmar/witr/releases/download/v0.3.4/SHA256SUMS
ls -la witr-0.3.4-linux-amd64.deb
实测回显:
-rw-r--r-- 1 root root 2830430 Oct 25 09:28 witr-0.3.4-linux-amd64.deb
校验哈希(清单里含全部 19 个附件,本地只下了 deb,其余行会报 FAILED open or read,属预期;只看目标行):
sha256sum -c SHA256SUMS 2>/dev/null | grep -E 'deb|linux-amd64 '
实测回显:
witr-0.3.4-linux-amd64.deb: OK
witr-0.3.4-linux-arm64.deb: FAILED open or read
witr-0.3.4-linux-loong64.deb: FAILED open or read
目标包显示 OK 即校验通过;arm64/loong64 行的 FAILED 是本地未下载这些文件所致,可忽略。
4.3 安装
dpkg -i /tmp/witr-0.3.4-linux-amd64.deb
实测回显:
Selecting previously unselected package witr.
(Reading database… 169908 files and directories currently installed.)
Preparing to unpack witr-0.3.4-linux-amd64.deb…
Unpacking witr (0.3.4)…
Setting up witr (0.3.4)…
Processing triggers for man-db (2.12.0-4build2)…
4.4 验证安装
deb 包的安装清单与元数据:
dpkg -L witr
dpkg -s witr | grep -E 'Package|Version|Architecture|Installed-Size'
实测回显:
/usr
/usr/bin
/usr/bin/witr
/usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/witr.1
Package: witr
Installed-Size: 7722
Architecture: amd64
Version: 0.3.4
确认 which -a witr 可看到两套安装共存时的查找顺序(PATH 中 /usr/local/bin 先于 /usr/bin):
/usr/local/bin/witr
/usr/bin/witr
/bin/witr
即:方案 A 与方案 B 同时存在时,实际执行的是 /usr/local/bin/witr。只保留一套安装是推荐做法,避免版本混淆(见第八章升级说明)。
五、手动二进制安装方案(C:离线通用)
5.1 方案说明
直接从 Releases 下载对应平台裸二进制,file 实测为静态链接 ELF,拷到任意 Linux x86_64 机器即可运行,适合完全离线、或不想引入包管理记录的场景。这是三条方案中唯一可「下载一次、任意分发」的方式。
5.2 下载与校验
cd /tmp
curl -fsSL -x http://192.168.1.62:7897 -O https://github.com/pranshuparmar/witr/releases/download/v0.3.4/witr-linux-amd64
curl -fsSL -x http://192.168.1.62:7897 -O https://github.com/pranshuparmar/witr/releases/download/v0.3.4/SHA256SUMS
grep 'witr-linux-amd64$' SHA256SUMS | sha256sum -c -
实测回显:
witr-linux-amd64: OK
5.3 验证二进制属性并安装
file witr-linux-amd64
chmod +x witr-linux-amd64
./witr-linux-amd64 --version
实测回显:
witr-linux-amd64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=aa760c0573de40fd
witr v0.3.4 (commit 7e46fa68151fd7c59fb7a0cf4247a9a0ac0fbb6e, built 2026-10-04T17:31:44Z)
statically linked 确认零动态依赖。确认无误后落位并补 man 页:
mv /tmp/witr-linux-amd64 /usr/local/bin/witr
mkdir -p /usr/local/share/man/man1
curl -fsSL -x http://192.168.1.62:7897 -o /usr/local/share/man/man1/witr.1 https://github.com/pranshuparmar/witr/releases/download/v0.3.4/witr.1
witr --version
实测回显:
witr v0.3.4 (commit 7e46fa68151fd7c59fb7a0cf4247a9a0ac0fbb6e, built 2026-10-04T17:31:44Z)
六、安装方案对比与选择建议
三套方案的实测对照:
| 维度 | A 在线脚本 | B deb 离线包 | C 手动二进制 |
|---|---|---|---|
| 版本 | 自动最新稳定版 | 固定 tag(v0.3.4) | 固定 tag(v0.3.4) |
| 是否需联网 | 需(GitHub API + Releases) | 下载可离线搬运 | 下载可离线搬运 |
| 安装位置 | /usr/local/bin/witr | /usr/bin/witr | 自定(本文 /usr/local/bin) |
| dpkg 包记录 | 无 | 有(dpkg -s witr 可查) | 无 |
| 升级方式 | 重跑脚本 | 替换新 deb 重装 | 替换二进制 |
| 校验机制 | 无(脚本直装) | SHA256SUMS | SHA256SUMS |
| 适用场景 | 单机快速上手(官方首推) | 内网批量分发、统一包管理 | 完全离线、最小依赖 |
选择建议:能联网的单机选 A(自动追新、零决策);有内网仓库或批量服务器选 B(有 dpkg 记录,apt list --installed 可统一盘点);隔离环境的跳板机/应急盘选 C。三方案二进制完全相同(同一 Release 产物),功能无差异。
七、系统包管理器安装方式一览
除上述三套实测方案外,官方 README 还收录了 16+ 个生态的分发渠道(查询日期 2026-10-25,本文环境未逐个实测,命令以官方 README 为准):
| 包管理器 | 平台 | 安装命令 | 备注 |
|---|---|---|---|
| apt | Debian sid / Ubuntu 26.04+ | sudo apt install witr | 版本可能滞后于 GitHub Release |
| Homebrew | macOS / Linux | brew install witr | |
| Conda / mamba / pixi | 跨平台 | conda install -c conda-forge witr | |
| npm | 跨平台 | npm install -g @pranshuparmar/witr | |
| AUR | Arch 系 | yay -S witr-bin | |
| FreeBSD pkg | FreeBSD | pkg install witr | |
| Winget / Chocolatey / Scoop | Windows | winget install -e --id PranshuParmar.witr 等 | |
| MacPorts | macOS | sudo port install witr | |
| Nix | 跨平台 | nix run github:pranshuparmar/witr -- --help | 免安装直接运行 |
| Go 源码编译 | 任意有 Go 工具链平台 | go install github.com/pranshuparmar/witr/cmd/witr@latest | 产物在 $HOME/go/bin |
💡 技术拓展:Go 语言 CLI 的多渠道分发是当前开源工具的通行做法,同一工具常见四种获取形态对比——
形态 原理 适用场景 发行版仓库(apt 等) 发行版维护者打包收录 版本稳定优先,接受滞后 语言生态仓库(npm/conda) 语言包管理器附带二进制分发 已有该生态工具链的团队 官方 Releases 二进制 作者 CI 构建直接分发 追新、离线、需要校验哈希 源码编译(go install) 本地构建最新主干 二次开发或极客环境 本文实际采用官方 Releases 二进制形态(方案 A/B/C 均源于此),理由是版本与官方 Release Notes 一一对应,排障时不会出现「仓库版行为与文档不符」的偏差。
八、升级与多版本管理
8.1 升级
- 方案 A(脚本):重跑一遍 install.sh 即覆盖升级到最新稳定版(脚本永远取 latest release tag):
export https_proxy=http://192.168.1.62:7897 http_proxy=http://192.168.1.62:7897
bash /tmp/witr-install.sh
witr --version
- 方案 B(deb):下载新版 deb 后
dpkg -i覆盖安装,dpkg 自动处理替换; - 方案 C(二进制):重复第五章步骤,
mv覆盖旧文件。
升级后用 witr --version 核对 tag 与构建时间,与 Release Notes 对应版本一致即成功。
8.2 多版本共存与回滚
witr 无自带版本管理,按安装位置区分:
- 多前缀共存:用
INSTALL_PREFIX把不同版本装到不同前缀(如/opt/witr-0.3.4、/opt/witr-0.3.3),按需调整PATH顺序切换; - 降级回滚:手动方案直接把旧版二进制拷回原路径即可(旧版附件在 GitHub Releases 的历史 tag 页都可下载);deb 方式
dpkg -i旧版包即完成降级; - 双安装冲突排查:若
/usr/local/bin与/usr/bin同时存在,which -a witr排序即实际生效版本(见 4.4 实测),清理到只剩一套是最佳实践。
九、卸载与清理
按安装方案对应清理(本文三方案均已实测):
# 方案 A / C 安装的文件(两个文件即可删干净)
rm -f /usr/local/bin/witr
rm -f /usr/local/share/man/man1/witr.1
# 方案 B 安装的 deb 包
dpkg -r witr
实测回显(deb 卸载,方案 A 文件已在场景中保留):
(Reading database… 169910 files and directories currently installed.)
Removing witr (0.3.4)…
Processing triggers for man-db (2.12.0-4build2)…
卸载后验证(/usr/bin/witr 已随包删除,脚本版仍在):
ls: cannot access '/usr/bin/witr': No such file or directory
dpkg-query: package 'witr' is not installed and no information is available
十、常见问题(FAQ)
Q1:dpkg -i 报 dpkg-deb: liblzma.so.5: version 'XZ_5.4' not found 怎么办?
这是本文实测真实命中的排障案例。完整现象(第一次安装):
dpkg-deb: /root/.trae-cn-server/bin/stable-871bca3bb55e7a37af74c1eef2a9696f29aa7b26-debian10/modules/ai-agent/liblzma.so.5: version `XZ_5.4' not found (required by dpkg-deb)
dpkg: error processing archive witr-0.3.4-linux-amd64.deb (--install):
dpkg-deb --control subprocess returned error exit status 1
Errors were encountered while processing:
witr-0.3.4-linux-amd64.deb
定位:报错路径指向的不是系统库目录,而是某应用自带的私有 lib 目录——即环境变量 LD_LIBRARY_PATH 被覆盖后,dpkg-deb 优先加载了旧版 liblzma(系统自带的 /usr/lib/x86_64-linux-gnu/liblzma.so.5.4.5 本身没问题)。查证:
LD_LIBRARY_PATH=<应用自带私有库目录1>:<应用自带私有库目录2>:<应用自带私有库目录3>
解决:仅对这一条命令清空该变量,让动态链接器走系统默认路径:
LD_LIBRARY_PATH= dpkg -i witr-0.3.4-linux-amd64.deb
实测回显(安装成功,同 4.3):
Selecting previously unselected package witr.
(Reading database… 169908 files and directories currently installed.)
Preparing to unpack witr-0.3.4-linux-amd64.deb…
Unpacking witr (0.3.4)…
Setting up witr (0.3.4)…
Processing triggers for man-db (2.12.0-4build2)…
⚠️ 正常服务器没有覆盖
LD_LIBRARY_PATH就不会遇到此问题;凡是dpkg/apt突然报形如liblzma.so.5: version 'XZ_5.4' not found(库名与版本号随场景变化)且报错路径不是/usr/lib开头,都应先检查这个变量。
Q2:安装成功但 shell 提示 witr: command not found?
/usr/local/bin 不在当前用户 PATH 时会出现。验证与修复:
echo $PATH
ls -la /usr/local/bin/witr
export PATH=/usr/local/bin:$PATH
非 root 免 sudo 安装(INSTALL_PREFIX="$HOME/.local")时,确认 ~/.local/bin 已在 PATH(多数发行版 .profile 默认含此目录,重登录生效)。
Q3:下载 GitHub 附件慢或超时?
按「官方直连 → 代理」降级(本文实测渠道见 3.2 ⚠️ 说明):github.com/.../releases/download/... 直连正常,raw.githubusercontent.com 与 api.github.com 超时。给 curl 加 -x http://<代理地址>:<端口> 即可;内网环境建议在有网机器下载 deb/二进制 + SHA256SUMS 后整体拷入。
Q4:如何确认我拿到的是官方未被篡改的二进制?
每个 Release 都附带 SHA256SUMS 清单,覆盖全部 19 个附件。按 4.2 / 5.2 实测方式校验,目标文件行显示 OK 即与官方产物逐字节一致。
Q5:arm64 / LoongArch 服务器怎么装?
把包名中的 amd64/linux-amd64 换成 linux-arm64 或 linux-loong64(deb/rpm/apk 与裸二进制均有对应附件,见 4.1 附件清单说明);LoongArch 支持自 v0.3.4 起(Release Notes PR #234)。脚本安装则全自动识别,无需任何改动。
十一、参考链接
- 官方安装文档(README §2 Installation):https://github.com/pranshuparmar/witr#2-installation
- v0.3.4 附件下载页(deb/rpm/apk/二进制/SHA256SUMS/man 页):https://github.com/pranshuparmar/witr/releases/tag/v0.3.4
- install.sh 脚本源码:https://raw.githubusercontent.com/pranshuparmar/witr/main/install.sh
- Repology 打包状态(各发行版收录版本一览):https://repology.org/project/witr/versions
- 本专栏前置认知篇:《witr v0.3.4 介绍与选型指南》(https://www.quzuo.net/document/76Q10ziexrrH)
- 本专栏参数与命令篇:《witr v0.3.4 配置参数详解》《witr v0.3.4 常用 CLI 命令详解》。