tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Definitions

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>

449028f6cbcfdacc2d1a433f9087c6734d1e1f8a · by Sergio · (1 month ago) · parent 80e04872d · browse the tree at this commit

Semantic delta

No definition changed: this change is text, documentation or data.

1 files · +34 −0

diff --git a/docs/28-servidor-de-produccion.md b/docs/28-servidor-de-produccion.md
index c03877b0..f4cab48a 100644
--- a/docs/28-servidor-de-produccion.md
+++ b/docs/28-servidor-de-produccion.md
@@ -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: