shuma-tui no encontraba a su agente: nadie exportaba XDG_RUNTIME_DIR
El síntoma era «no hay agente atendiendo» y después «arranqué shuma-daemon y en 10 s no atendió ningún socket», con un daemon de sergio VIVO al lado. La causa: esta caja no tiene logind, así que nadie crea /run/user/<uid> ni exporta XDG_RUNTIME_DIR, y entonces cada programa elige su propio repliegue y dejan de encontrarse — el tui buscaba en `$XDG_RUNTIME_DIR/shuma.sock`, o sea en la nada, mientras el daemon abría `/tmp/shuma-<uid>.sock`. Dos repliegues distintos para el mismo acuerdo. Ahora /etc/profile.d exporta XDG_RUNTIME_DIR y la card de arranque crea /run/user/<uid> para cada cuenta con home. Comprobado en una sesión de login de verdad: XDG=/run/user/1001, el tui levanta su agente ahí y lista los conjuntos guardados (shuma 4 puestos, telefono-864, los diag…), que estaban en disco y no se perdieron al reiniciarlo. Entra también la card del volumen de trabajo —esta caja no tiene fstab y el init no monta discos nuevos— y quedan versionados /etc/profile y los dos profile.d, que hasta ayer no los leía nadie porque /etc/profile no existía. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,62 @@
|
|||||||
|
{
|
||||||
|
"id": "01M2F0NTARTRABAJ0V0VMEN012",
|
||||||
|
"label": "montar-trabajo",
|
||||||
|
"lifecycle": "oneshot",
|
||||||
|
"supervision": "OneShot",
|
||||||
|
"priority": "normal",
|
||||||
|
"lineage": null,
|
||||||
|
"provides": [],
|
||||||
|
"requires": [],
|
||||||
|
"flow": {
|
||||||
|
"input": [],
|
||||||
|
"output": []
|
||||||
|
},
|
||||||
|
"genesis": [],
|
||||||
|
"permissions": {
|
||||||
|
"filesystem": "read-write",
|
||||||
|
"networking": "none",
|
||||||
|
"processes": true,
|
||||||
|
"ipc": {
|
||||||
|
"allow": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"soma": {
|
||||||
|
"cgroup": {
|
||||||
|
"cpu_weight": null,
|
||||||
|
"io_weight": null,
|
||||||
|
"path": "arje.slice/montar-trabajo"
|
||||||
|
},
|
||||||
|
"cpu_affinity": null,
|
||||||
|
"namespaces": {
|
||||||
|
"cgroup": false,
|
||||||
|
"ipc": false,
|
||||||
|
"mount": false,
|
||||||
|
"net": false,
|
||||||
|
"pid": false,
|
||||||
|
"user": false,
|
||||||
|
"uts": false
|
||||||
|
},
|
||||||
|
"rlimits": {
|
||||||
|
"mem_bytes": null,
|
||||||
|
"nofile": null,
|
||||||
|
"nproc": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"schema_version": 1,
|
||||||
|
"payload": {
|
||||||
|
"Native": {
|
||||||
|
"exec": "/bin/busybox",
|
||||||
|
"envp": [
|
||||||
|
[
|
||||||
|
"PATH",
|
||||||
|
"/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"argv": [
|
||||||
|
"sh",
|
||||||
|
"-c",
|
||||||
|
"mkdir -p /run/user; chmod 1777 /run/user; for h in /home/*; do u=$(basename $h); id -u $u >/dev/null 2>&1 || continue; mkdir -p /run/user/$(id -u $u); chown $u /run/user/$(id -u $u); chmod 700 /run/user/$(id -u $u); done; d=$(blkid -L trabajo 2>/dev/null); test -n \"$d\" || { echo montar-trabajo: ningun disco con LABEL=trabajo — el volumen no esta enchufado >&2; exit 78; }; mkdir -p /vvv; grep -q /vvv /proc/mounts || mount \"$d\" /vvv || { echo montar-trabajo: no pude montar el volumen >&2; exit 78; }; test -d /vvv/sergio || exit 0; mkdir -p /work/sergio; grep -q /work/sergio /proc/mounts || mount --bind /vvv/sergio /work/sergio; echo \"montar-trabajo: /vvv $(df -h /vvv | awk NR==2{print }) libres\""
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# /etc/profile — lo lee toda shell de LOGIN. Existe para que `/etc/profile.d/*.sh` sirva de algo:
|
||||||
|
# el directorio estaba y nadie lo leía (2026-09-18).
|
||||||
|
for _f in /etc/profile.d/*.sh; do
|
||||||
|
[ -r "$_f" ] && . "$_f"
|
||||||
|
done
|
||||||
|
unset _f
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# El enlace de rust pasa por el driver de C (ver /usr/bin/cc). Sin esto no enlaza ninguna dylib,
|
||||||
|
# o sea ninguna proc-macro. SDD 28 §6.52.
|
||||||
|
export RUSTFLAGS="${RUSTFLAGS:-} -C linker=cc -C linker-flavor=gcc -C link-self-contained=no"
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Esta caja no tiene logind, así que nadie crea /run/user/<uid> ni exporta XDG_RUNTIME_DIR. Sin eso,
|
||||||
|
# cada programa elige su propio repliegue y dejan de encontrarse: `shuma-tui` buscaba en
|
||||||
|
# `$XDG_RUNTIME_DIR/shuma.sock` (o sea, en la nada) mientras `shuma-daemon` abría
|
||||||
|
# `/tmp/shuma-<uid>.sock`. Medido en la caja el 2026-09-18.
|
||||||
|
if [ -z "${XDG_RUNTIME_DIR:-}" ]; then
|
||||||
|
XDG_RUNTIME_DIR=/run/user/$(id -u)
|
||||||
|
[ -d "$XDG_RUNTIME_DIR" ] || { mkdir -p "$XDG_RUNTIME_DIR" 2>/dev/null && chmod 700 "$XDG_RUNTIME_DIR" 2>/dev/null; }
|
||||||
|
export XDG_RUNTIME_DIR
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user