Ubuntu 22.04 安装 WTFUtil 0.51.0 指南
Ubuntu 22.04 实测安装 WTFUtil v0.51.0:官方二进制(SHA256 校验)、go install、源码 make install 三路径全回显,含版本选型、升级降级、卸载与 TERM/GOPROXY/落点误导排障实录。
Ubuntu 22.04 安装 WTFUtil 0.51.0 指南
目标:在 Ubuntu 22.04 服务器上从零安装终端个人信息仪表盘 WTFUtil(GitHub 仓库 wtfutil/wtf,命令名
wtfutil),覆盖版本选型、官方二进制(推荐)、go install、源码编译三条安装路径的完整命令与实测回显,以及升级、多版本共存、卸载与排障实录。全文命令与输出均在 Ubuntu 22.04.5 LTS(x86_64)实测通过,实测版本为 v0.51.0(查询日期 2026-10-23)。
一、环境信息
- 操作系统:Ubuntu 22.04.5 LTS(实测回显见下);
- 架构:x86_64;
- WTFUtil 版本:v0.51.0(GitHub 最新稳定版,查询日期 2026-10-23);
- 许可证:MPL-2.0;
- 系统版本实测回显:
cat /etc/os-release | head -3
uname -m
实测输出:
PRETTY_NAME="Ubuntu 22.04.5 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
x86_64
二、前置条件
2.1 网络与基础工具
安装过程需要 curl(下载发布件)、tar/sha256sum(系统自带);走源码编译路径还需要 git 与 make,走 go install 路径需要 Go 1.26.4 工具链(见方案 B)。先更新索引并安装基础工具:
sudo apt-get update
sudo apt-get install -y curl tmux ca-certificates git make
实测输出(索引更新末尾,节选):
Hit:2 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Reading package lists...
工具版本实测回显:
curl --version | head -1
tmux -V
git --version
make --version | head -1
curl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.2 libssh/0.9.6/openssl/zlib nghttp2/1.43.1 librtmp/1.43.1 OpenLDAP/2.5.20)
tmux 3.2a
git version 2.34.1
GNU Make 4.3
💡 说明:
tmux非必装,但 WTFUtil 是全屏 TUI 程序,用 tmux 会话托管最方便(断开 SSH 后仪表盘仍在跑,重连tmux attach即可看到原画面)。后续验证均以 tmux 会话演示。
2.2 运行前提
WTFUtil 是前台 TUI 程序,需要:一个可交互的终端(TTY)、TERM 环境变量指向有效终端类型(如 xterm-256color)。在无 TTY 的非交互环境(如定时任务、部分远程执行通道)直接运行会报 ERROR terminal entry not found: term not set,这不是安装问题,见「九、常见问题」Q1。
三、版本选型说明
3.1 版本选择
查询 GitHub Releases(2026-10-23),最新稳定版为 v0.51.0,构建时间 2026-09-29T16:08:28Z,实测安装该版本。项目 2026 年起正从 "WTF" 更名为 Tessera(仓库将迁移至 github.com/linodians/tessera),v0.51.0 同时发布两套命名规则的压缩包,内容为同一次构建:
| 发布件命名 | 内含二进制 | 适用 |
|---|---|---|
wtf_0.51.0_linux_amd64.tar.gz | wtfutil | 延续既有习惯,推荐 |
tessera--v0.51.0--linux-amd64.tar.gz | tessera | 跟随新命名 |
关键解读:两套包里的二进制功能完全相同(同为 v0.51.0 构建,--version 输出一致);本指南主线路径安装旧名二进制并命名为 wtfutil,与官方文档、示例一致。
3.2 v0.51.0 发布件清单与校验值
v0.51.0 共 11 个文件:5 个旧名 tar.gz(darwin amd64/arm64、linux amd64/arm64/armv6)、5 个新名 tar.gz(darwin amd64/arm64、linux amd64/arm64/armv7)与 1 个总校验文件 tessera_0.51.0_checksums.txt(内含全部 10 个压缩包的 SHA256)。官方没有提供 deb/rpm 包——实查 v0.46.0、v0.49.0、v0.50.0、v0.51.0 四个版本的发布件清单均无 .deb/.rpm,Ubuntu 亦无官方 apt 仓库,Ubuntu 上的正规安装路径就是本文的三条方案(二进制/go install/源码)。
本机使用的 linux-amd64 压缩包官方 SHA256(摘自 tessera_0.51.0_checksums.txt):
a2fa4407711a6d2b0103663a9ef47b0f0a7a6031a3ec1b9f7eb8aa55e86a1133 tessera--v0.51.0--linux-amd64.tar.gz
5b1670e8a6a2bfcddf699bccbaae6b53263d75b87ef099d8e2a837c1d5ffc81b wtf_0.51.0_linux_amd64.tar.gz
四、方案 A:官方二进制安装(推荐)
本方案直接使用官方 goreleaser 产物,不引入编译工具链,最快、最可控,适合绝大多数服务器。
4.1 下载发布件
cd /root
curl -LO https://github.com/wtfutil/wtf/releases/download/v0.51.0/wtf_0.51.0_linux_amd64.tar.gz
curl -LO https://github.com/wtfutil/wtf/releases/download/v0.51.0/tessera_0.51.0_checksums.txt
实测输出(ls -la *.tar.gz *.txt):
-rw-r--r-- 1 root root 22765499 Oct 23 07:03 wtf_0.51.0_linux_amd64.tar.gz
-rw-r--r-- 1 root root 999 Oct 23 07:03 tessera_0.51.0_checksums.txt
⚠️ 下载较慢时可改走代理:
curl -x http://<代理地址>:<端口> -LO <URL>,或先export http_proxy=http://<代理地址>:<端口> https_proxy=http://<代理地址>:<端口>再执行下载。
4.2 校验 SHA256
把官方校验文件中本平台的行取出来做全量比对:
sha256sum -c tessera_0.51.0_checksums.txt 2>&1 | grep -E "OK|FAILED"
实测输出(只下载了 linux-amd64 两个包,其余报 FAILED open or read 属正常现象,见 FAQ Q5):
tessera--v0.51.0--linux-amd64.tar.gz: OK
wtf_0.51.0_linux_amd64.tar.gz: OK
也可以只算单个文件的哈希与官方值人工比对:
sha256sum wtf_0.51.0_linux_amd64.tar.gz
5b1670e8a6a2bfcddf699bccbaae6b53263d75b87ef099d8e2a837c1d5ffc81b wtf_0.51.0_linux_amd64.tar.gz
与 3.2 节官方值一致,校验通过。
4.3 解压与安装
mkdir -p wtf-old
tar xzf wtf_0.51.0_linux_amd64.tar.gz -C wtf-old
ls -la wtf-old/
实测输出:
total 74792
drwxr-xr-x 2 root root 4096 Oct 23 07:03 .
drwx------ 1 root root 4096 Oct 23 07:03 ..
-rw-r--r-- 1 1001 1001 14881 Sep 29 16:21 LICENSE.md
-rw-r--r-- 1 1001 1001 8190 Sep 29 16:21 README.md
-rwxr-xr-x 1 1001 1001 76550409 Sep 29 16:27 wtfutil
包内三件套:许可证、README、单个约 76MB 的静态二进制 wtfutil(Go 静态编译,无任何运行时依赖)。把二进制安装到系统路径:
install -m 0755 /root/wtf-old/wtfutil /usr/local/bin/wtfutil
4.4 验证安装
wtfutil --version
实测输出:
WTF v0.51.0 (built: 2026-09-29T16:08:28Z)
退出码验证(应返回 0):
wtfutil --version >/dev/null; echo "exit=$?"
exit=0
再启动一次 TUI 做最终验证(在 tmux 会话中执行,退出键为 q):
tmux new-session -d -s wtf -x 100 -y 20 'wtfutil; echo EXIT=$?; sleep 30'
sleep 5
tmux capture-pane -t wtf -p | head -3
实测输出(默认配置下的仪表盘顶部,节选):
┌─ ~/.config/wtf/config.yml 1 ─┐┌────────── Clocks A ──────────┐┌────────── Clocks B ──────────┐
│ ││ Toronto 03:04 EDT Oct ││ Barcelona 09:04 CEST Oct │
│wtf: ││ Vancouver 00:04 PDT Oct ││ Dubai 11:04 +04 Oct │
首次运行自动创建了配置目录与默认配置文件(ls -la ~/.config/wtf/ 实测):
total 16
drwxr-xr-x 2 root root 4096 Oct 23 07:04 .
drwxr-xr-x 3 root root 4096 Oct 23 07:04 ..
-rw------- 1 root root 2004 Oct 23 07:04 config.yml
-rw------- 1 root root 98 Oct 23 07:04 log.txt
到此方案 A 安装完成。配置文件结构与模块参数逐项说明见 《WTFUtil 0.51.0 配置参数详解》(专栏配置篇)。
4.5 新名包(tessera)的平行验证
如需跟随新命名,下载 tessera--v0.51.0--linux-amd64.tar.gz 解压后得到 tessera 二进制(ls -la tessera-new/ 实测):
total 74792
drwxr-xr-x 2 root root 4096 Oct 23 07:03 .
drwx------ 1 root root 4096 Oct 23 07:03 ..
-rw-r--r-- 1 1001 1001 14881 Sep 29 16:21 LICENSE.md
-rw-r--r-- 1 1001 1001 8190 Sep 29 16:21 README.md
-rwxr-xr-x 1 1001 1001 76550409 Sep 29 16:27 tessera
tessera --version 实测输出(与 wtfutil 完全一致的版本串):
WTF v0.51.0 (built: 2026-09-29T16:08:28Z)
五、方案 B:go install 安装
本方案用 Go 工具链从官方模块仓库拉取源码编译安装,适合已有 Go 环境、希望与团队其他 Go 工具统一管理的服务器。缺点是耗时(全量编译)且产物名与官方发布件不同(见 5.3)。
5.1 安装 Go 1.26.4 工具链
仓库 go.mod 声明 go 1.26.4(2026-10-23 查询),而 Ubuntu 22.04 官方源里的 golang-go 是 1.18,版本不满足要求,必须用官方 tarball 安装新版 Go:
cd /root
curl -LO https://go.dev/dl/go1.26.4.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.26.4.linux-amd64.tar.gz
/usr/local/go/bin/go version
实测输出:
go version go1.26.4 linux/amd64
把 Go 纳入 PATH(写入 /etc/profile.d/go.sh 并生效):
echo 'export PATH=/usr/local/go/bin:$HOME/go/bin:$PATH' > /etc/profile.d/go.sh
source /etc/profile.d/go.sh
go version
go version go1.26.4 linux/amd64
5.2 执行 go install
go install github.com/wtfutil/wtf@latest
实测输出(编译期间无关键输出,完成后检查产物):
go-install-exit=0
⚠️ 排障实录:第一次执行时使用了国内模块代理
GOPROXY=https://proxy.golang.cn,direct,经代理转发时报read tcp <本机地址>-><代理地址>: read: connection reset by peer,下载失败。定位为该代理链路对模块仓库不稳定,改用官方模块代理并让 HTTP 走代理后成功:export GOPROXY=https://proxy.golang.org,direct http_proxy=http://<代理地址>:<端口> https_proxy=http://<代理地址>:<端口>,随后go install github.com/wtfutil/wtf@latest顺利完成(退出码 0)。
5.3 验证与命名说明
go install 产物落在 $HOME/go/bin/,注意二进制名是 wtf 而不是 wtfutil(模块路径的末段即产物名),与 shell 中 BSD 系的 wtf 命令重名风险更高,建议重命名为 wtfutil 再投放到系统路径:
ls -la ~/go/bin/
total 103268
drwxr-xr-x 2 root root 4096 Oct 23 07:12 .
drwxr-xr-x 4 root root 4096 Oct 23 07:12 ..
-rwxr-xr-x 1 root root 105737500 Oct 23 07:12 wtf
~/go/bin/wtf --version
WTF v0.51.0
Note: This is an unofficial release.
版本串多出一行 Note: This is an unofficial release.——这是源码构建版的自带提示(区别于 goreleaser 官方发布件),功能不受影响。若要统一命令名:
install -m 0755 ~/go/bin/wtf /usr/local/bin/wtfutil
wtfutil --version
WTF v0.51.0
Note: This is an unofficial release.
六、方案 C:源码编译安装(make install)
本方案克隆源码仓库后用项目自带 Makefile 构建,适合需要改动源码、或要固定到特定 commit 的场景。前置:已按 5.1 装好 Go 工具链,且有 git、make。
cd /root
git clone --depth 1 --branch v0.51.0 https://github.com/wtfutil/wtf.git wtf-src
cd wtf-src
make install
实测输出(git clone 末尾与 make install 全量):
Turn off this advice by setting config variable advice.detachedHead to false
\ / | | | __|
\ /\ / | | | |
\__/ \__/ |__| |__|
Installing wtfutil with go version go1.26.4 linux/amd64...
wtfutil installed into /usr/local/bin/wtfutil
⚠️ 排障实录(重要):
make install打印的 "wtfutil installed into /usr/local/bin/wtfutil" 具有误导性——看 Makefile 源码(第 98 行install目标)可知,它执行的是go install -ldflags="-s -w",产物实际落在$HOME/go/bin/,结尾的installed into ...只是which wtfutil的回显,找到的是你之前装的旧二进制。实测确认:
ls -la /root/go/bin/
total 74592
drwxr-xr-x 2 root root 4096 Oct 23 07:21 .
drwxr-xr-x 4 root root 4096 Oct 23 07:12 ..
-rwxr-xr-x 1 root root 76370082 Oct 23 07:21 wtf
产物名是 wtf(同方案 B),但因为是按 v0.51.0 tag 且带官方 ldflags 构建的,版本串反而是完整构建信息、没有 unofficial 提示:
/root/go/bin/wtf --version
WTF v0.51.0 (built: 2026-09-29T16:08:28Z)
要把本方案产物投放到系统路径并使用标准命令名:
install -m 0755 /root/go/bin/wtf /usr/local/bin/wtfutil
wtfutil --version
WTF v0.51.0 (built: 2026-09-29T16:08:28Z)
日常安装无需走本方案,选方案 A 即可。
七、方案对比与选择建议
| 维度 | A 官方二进制 | B go install | C 源码编译 |
|---|---|---|---|
| 版本新鲜度 | 官方发布版 | 跟随模块仓库 @latest | 固定到任意 tag/commit |
| 需要编译工具链 | 否 | 是(Go 1.26.4) | 是(Go 1.26.4 + git + make) |
| 安装耗时 | 秒级(下载为主) | 分钟级(全量编译) | 分钟级(全量编译) |
| 产物名与落点 | wtfutil(新名包为 tessera) | wtf,落 $HOME/go/bin/(需手动改名) | wtf,落 $HOME/go/bin/(需手动改名;installed into 回显有误导,见方案 C 排障实录) |
--version 特征 | WTF v0.51.0 (built: <时间>) | 多一行 Note: This is an unofficial release. | WTF v0.51.0 (built: <时间>)(tag 构建带完整信息) |
| 适用场景 | 绝大多数服务器(推荐) | 已有 Go 工具链统一管理 | 二次开发/固定 commit |
选择建议:生产与日常一律选 A(校验值可控、产物名标准);仅当团队已标准化 Go 工具链且需要与内部工具同流程管理时选 B;只有改源码才需要 C。
八、安装后基础配置
WTFUtil 安装后无需任何系统级配置即可运行;它的"配置"就是一份 YAML 文件:
- 默认路径:
~/.config/wtf/config.yml,首次启动自动创建(实测见 4.4,生成 2004 字节的默认配置,内含时钟、文本文件、命令输出等基础模块); - 自定义路径:
wtfutil --config=/path/to/config.yml,或环境变量WTF_CONFIG=/path/to/config.yml; - 日志:
~/.config/wtf/log.txt。
完整的全局参数(colors/grid/refreshInterval/navigation 等)与模块通用参数、逐项实测生效说明,见 《WTFUtil 0.51.0 配置参数详解》(专栏配置篇);命令行参数与键盘操作见 《WTFUtil 0.51.0 常用 CLI 命令与工具详解》(专栏命令篇)。
九、常见问题(FAQ)
Q1:运行报 ERROR terminal entry not found: term not set,退出码 1?
这是 TERM 环境变量未设置导致的——WTFUtil 是 TUI 程序,必须有终端类型。实测复现:在无 TTY 的非交互执行环境里运行 wtfutil --save(一个不存在的 flag,wtfutil 先报 flag 错误、随后尝试启动 TUI):
unknown flag `save'
ERROR terminal entry not found: term not set
解决:交互式 shell 里 TERM 通常已就绪;若确在受限环境,先 export TERM=xterm-256color 再运行。真要在无人值守环境里"挂着"仪表盘,用 tmux 会话承载。
Q2:go install 报 connection reset by peer?
见 5.2 排障实录:模块代理链路不稳定所致,切换 GOPROXY=https://proxy.golang.org,direct 并为 HTTPS 流量配置代理后恢复正常。
Q3:GitHub 下载很慢或超时?
为 curl 增加代理参数(curl -x http://<代理地址>:<端口> -LO <URL>)或导出 http_proxy/https_proxy 环境变量后重试;校验时以 tessera_0.51.0_checksums.txt 为准,勿使用来源不明的镜像。
Q4:为什么 Ubuntu 没有 apt install wtfutil?
官方未提供 apt 仓库、发布件里也没有 deb 包(实查 v0.46.0–v0.51.0 发布件清单均无 .deb/.rpm)。Ubuntu 上请用本文方案 A/B/C 三条路径,不建议引入第三方 PPA。
Q5:sha256sum -c 报一堆 FAILED open or read?
官方校验文件覆盖全部 10 个平台的压缩包,你只下载了 linux-amd64 的 1–2 个,未下载的文件必然报 FAILED open or read。确认目标行(*_linux_amd64.tar.gz: OK)为 OK 即可,忽略其余。
Q6:想升级/回退版本怎么办? 见「十、升级、降级与多版本管理」,替换二进制即可,配置文件向后兼容。
十、升级、降级与多版本管理
10.1 升级到新版本
WTFUtil 是单二进制程序,升级 = 下载新版本压缩包并替换 /usr/local/bin/wtfutil:
cd /root
curl -LO https://github.com/wtfutil/wtf/releases/download/<新版本号>/wtf_<新版本号>_linux_amd64.tar.gz
sha256sum wtf_<新版本号>_linux_amd64.tar.gz # 与该版本 checksums.txt 比对
tar xzf wtf_<新版本号>_linux_amd64.tar.gz -C wtf-upgrade
install -m 0755 /root/wtf-upgrade/wtfutil /usr/local/bin/wtfutil
wtfutil --version
<新版本号> 以 GitHub Releases 页面实际最新值为准(本文写作时为 0.51.0)。配置文件位于用户目录、与二进制分离,升级不丢配置。
10.2 降级与多版本共存
把不同版本安装到独立目录,用符号链接切换:
install -d /opt/wtfutil/0.51.0
install -m 0755 /root/wtf-old/wtfutil /opt/wtfutil/0.51.0/wtfutil
ln -sfn /opt/wtfutil/0.51.0/wtfutil /usr/local/bin/wtfutil
wtfutil --version
实测输出:
WTF v0.51.0 (built: 2026-09-29T16:08:28Z)
降级即把符号链接指向旧版本目录。go install 路径的升级/降级通过 go install github.com/wtfutil/wtf@v<版本号> 指定版本重装。
十一、卸载与清理
rm -f /usr/local/bin/wtfutil /usr/local/bin/tessera /root/go/bin/wtf
rm -rf ~/.config/wtf # 用户配置与日志(含所有个人配置,谨慎)
rm -rf /root/wtf-old /root/wtf-upgrade /root/wtf-src /opt/wtfutil # 安装过程产物
rm -rf /usr/local/go # 如仅为此安装了 Go 工具链
卸载后验证:which wtfutil 应无输出。
十二、参考链接
- v0.51.0 发布页与发布件:
https://github.com/wtfutil/wtf/releases/tag/v0.51.0(查询日期 2026-10-23) - 校验文件:
https://github.com/wtfutil/wtf/releases/download/v0.51.0/tessera_0.51.0_checksums.txt(查询日期 2026-10-23) - 官方安装文档:
https://wtfutil.com/installation/与仓库 README(查询日期 2026-10-23) - Go 官方下载:
https://go.dev/dl/(go1.26.4,查询日期 2026-10-23) - 站内互链:《WTFUtil 介绍与选型指南》