el primer store-gc de la caja: 26,8 G liberados, y el patrón GNU-vs-busybox ya va por cinco

/store pasó de 84,7 G usados (91 %) a 57,9 G (62 %): 337 superados borrados y VERIFICADOS, 1657 →
1320 artefactos. Los 150 huérfanos (11,4 G) quedan intactos por diseño: son el único ejemplar de su
nombre.

EL CONTROL QUE NO ES OBVIO: 11 binarios de /usr/bin de esa caja son symlinks que apuntan DENTRO del
store — los daemons instalados estos dos días. Un gc que borre el artefacto equivocado no rompe el
store, rompe el /usr/bin de una máquina en producción. Comprobado antes (los 11 enlazan al hash
vigente) y después (los 11 resuelven, 21 entes corriendo).

Y el gc no sabía decir sus dos números: `du --files0-from=-` es GNU y busybox no lo tiene; `df -h
/home` estaba cableado cuando el store vive en /store (sin /home, `tail -1` devolvía la CABECERA: de
ahí «libres: Available → Available»). El primer arreglo también estaba mal —`xargs -d` es otra
extensión GNU— y eso imprimió «huérfanos ?»: ese `?` es deliberado, un cero inventado habría dicho
«no hay nada que ganar» con 11,4 G en huérfanos. Con `xargs -0` la caja ya contesta 11.4G.

⇒ Cinco tropiezos del mismo día con la misma forma (/dev/tcp, llaves, find -newermt, sustitución de
procesos, y estos dos): un script del hub escrito en una máquina GNU no corre en la caja hasta que se
prueba ahí.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sergio
2026-09-17 15:20:41 +00:00
co-authored by Claude Opus 5
parent 1ca210a311
commit 6901beee93
+51
View File
@@ -2616,6 +2616,57 @@ no se corrió allá.
⇒ **puerta 4 en verde.** Con eso, de las ocho quedan sólo las dos a medias (5 y 7) y ninguna en rojo.
### 6.44 🧹 Primer `store-gc` en la caja: 26,8 G — y dos bugs que sólo salen fuera de GNU *(2026-09-17)*
El store estaba al **91 %** (8,2 G libres) justo cuando la caja pasó a ser hub, que es la peor
combinación: un hub sella y cosecha.
```
antes: 84,7 G usados · 8,2 G libres · 91 % · 1657 artefactos
después: 57,9 G usados · 35,0 G libres · 62 % · 1320 artefactos
```
**337 artefactos superados borrados y verificados (0 sobrevivientes), 26,8 G.** El default del gc no
toca los **150 huérfanos** —`11,4 G`, los que son el único ejemplar de su nombre— y eso está bien:
borrarlos es la diferencia entre «se reconstruye en dos minutos» y «hay que rehacer la torre».
#### El control que hay que correr DESPUÉS de un gc en esta caja, y que no es obvio
**11 binarios de `/usr/bin` son symlinks que apuntan DENTRO del store** — los daemons que se
instalaron estos dos días. Un gc que borre el artefacto equivocado no rompe el store: rompe el
`/usr/bin` de una máquina en producción. Antes de `--aplicar` se comprobó que los 11 enlazan al hash
**vigente** (y por lo tanto están en el conjunto protegido); después, que los 11 siguen resolviendo y
que los 21 entes siguen corriendo. Los dos controles pasaron.
⚠ Y la advertencia que el propio gc imprime y que en esa caja **no se puede satisfacer**: «sin
`.config` legible (ni `/proc/config.gz` ni `/boot/config-…`) ⇒ NO se protege ningún kernel por esta
vía». Con el default da igual; con `--huerfanos` en una máquina que arranca de su store, no.
#### Los dos números que el gc no sabía decir
Funcionó, pero sus dos cifras salieron vacías — y son las que uno mira para decidir si vale la pena:
```
==> espacio: superados · huérfanos
==> 337 artefactos borrados y VERIFICADOS · libres: Available → Available
```
1. **`du -sch --files0-from=-` es de GNU y busybox no lo tiene** ⇒ `espacio()` devolvía vacío. *Un
número que falta se lee como un número chico.*
2. **`df -h /home` estaba cableado** y el store no vive ahí: en gioser es un bind-mount del volumen,
en la caja es `/store`. Sin `/home`, `tail -1` se quedó con la CABECERA — de ahí
«Available → Available».
Arreglados los dos… y el primer arreglo **también estaba mal**: `xargs -d '\n'` es otra extensión
GNU. Eso imprimió `huérfanos ?`, y ese `?` es deliberado: cuando el total no se puede calcular, la
función lo DICE en vez de escribir 0 — un cero inventado habría dicho «no hay nada que ganar» con
11,4 G en huérfanos. Con `tr '\n' '\0' | xargs -0`, que busybox sí tiene, la caja ya contesta
**`espacio: superados 0 · huérfanos 11.4G`**.
⇒ Van **cinco** tropiezos del mismo día con la misma forma (`/dev/tcp`, expansión de llaves,
`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í.**
## 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: