la poda de fuentes ya corre en la caja: 5,4 G — y van 32,2 G recuperados hoy

El paso de poda del latido moría con `/dev/fd/63: No such file or directory` y un `viejos: unbound
variable` de consecuencia. La causa no era el script: la sustitución de procesos de bash necesita
/dev/fd y UNA CAJA TAKANA NO LO TIENE (gioser sí). O sea que ningún `<(...)` de ningún script del hub
funcionaba allá; éste fue el primero en toparse.

Arreglado en los dos lados: /dev/fd -> /proc/self/fd en la caja con Card OneShot en el genesis
(comprobado: `cat <(echo funciona)` responde), y en el script fuera `<(...)` y fuera `df -B1
--output=avail`, que es GNU — sin eso corría pero decía «libres 0.0 G», y un 0 se lee como disco
lleno.

Resultado: 2 árboles podados, 5,4 G. Con el store-gc del §6.44 son 32,2 G recuperados hoy en la
caja: /store al 62 %, /work al 29 %.

⇒ Van dos parches con forma de Card OneShot para cosas que debería hacer el init (hostname y ahora
/dev/fd). Es una lista que conviene no alargar.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sergio
2026-09-17 15:56:53 +00:00
co-authored by Claude Opus 5
parent 80e04872d7
commit 449028f6cb
+34
View File
@@ -2667,6 +2667,40 @@ función lo DICE en vez de escribir 0 — un cero inventado habría dicho «no h
`find -newermt`, sustitución de procesos, y estos dos). El patrón ya no es anécdota: **un script del
hub escrito en una máquina GNU no corre en la caja hasta que se prueba ahí.**
### 6.45 🧯 `poda-fuentes` tampoco corría — y la causa no era el script: **la caja no tiene `/dev/fd`** *(2026-09-17)*
El latido, desde la caja, moría así en su paso de poda:
```
poda-fuentes.sh: line 72: /dev/fd/63: No such file or directory
poda-fuentes.sh: line 73: viejos: unbound variable
⚠ poda de fuentes falló (rc=1) — sigo
```
El segundo error es consecuencia del primero (el `mapfile` nunca corrió) y el primero **no nombra la
causa**: la sustitución de procesos de bash (`<(...)`) necesita `/dev/fd`, y **una caja takana no lo
tiene**. gioser sí: `/dev/fd -> /proc/self/fd`. O sea que no era este script: **ningún `<(...)` de
ningún script del hub funcionaba allá**, y éste fue el primero en toparse.
Por eso los arreglos son dos, y los dos hacían falta:
1. **En la caja**: `/dev/fd -> /proc/self/fd`, con una Card **OneShot** en el `genesis` para que
sobreviva al reinicio (como la de `hostname`). Comprobado después:
`bash -c 'cat <(echo funciona)'` responde. ⇒ *lo correcto a futuro es que lo haga el init o el
product-rootfs, no una Card.* Van dos parches de esta forma; es una lista que conviene no alargar.
2. **En el script**: fuera `<(...)` (fichero temporal) y fuera `df -B1 --output=avail`, que es GNU —
con `df -k` + awk. Sin eso el script corría pero decía **`libres 0.0 G`**, porque el `df` fallaba
en silencio y el 0 se lee como un disco lleno.
Con las dos cosas, la poda hizo su trabajo por primera vez en la caja:
```
2 árbol(es) por encima del suelo · borrados 2 · libres 46.1 G · LIBERADO 5.4 G
```
⇒ **En total, 32,2 G recuperados hoy en la caja**: 26,8 G de artefactos superados (§6.44) y 5,4 G de
árboles de fuentes. `/store` al 62 %, `/work` al 29 %.
## 7. Reusar los scripts que ya existen, y no escribir de nuevo
Pedido explícito del usuario. El inventario de lo que ya hace el trabajo: