libffi-shared en base: python3 volvía a ser INERTE en servidor, cli y base — y el vigía no miraba ahí
`vigia-sonames.py` corría por defecto SÓLO sobre los cinco perfiles de escritorio
(`p.startswith("escritorio")`). O sea que `base`, `cli` y `servidor` —el objetivo de la mudanza—
**nunca se miraron**. Apuntándolo a ellos a mano:
== servidor 147 nodos · 183 sonames provistos · 1 sin proveedor
FALTA libffi.so.8 ← lo piden: python3
`python3` no arrancaba en las tres imágenes, por el mecanismo EXACTO que `musl-shared` y
`zlib-shared` arreglaron dos días antes: la receta canónica de libffi es `--disable-shared`, ningún
artefacto del cierre publica ese soname, y dentro del lab el agujero lo tapa el rootfs de Alpine —
así que el build pasa y la imagen sale rota. `libffi-shared` ya existía en el corpus y ya estaba
declarada en otros dos perfiles; sólo faltaba en `base`.
servidor 148 nodos · 186 sonames · **0 sin proveedor** (base y cli, igual)
## Y el vigía pasa a mirar TODOS los perfiles
⚠ **Es la tercera vez en dos días que un guardián de este repo mide menos de lo que su resumen
afirma**: `static-audit.sh` sólo globeaba `recipes/` y no las 5 colas (3 mentiras ocultas); el bloque
de raíces sucias sólo corría al hidratar un perfil y no veía las 649 recetas fuera de toda imagen
(qdrant con 69 M de basura); y éste dejaba fuera medio sistema. **Un «0 huecos» sobre la mitad del
sistema se imprime igual que uno sobre todo él.**
⇒ Al leer un guardián, leer su SCOPE antes que su veredicto: el glob, el bucle, de dónde saca la
lista. Los ocho perfiles dan 0 sin proveedor, así que ampliar el alcance no mete ruido — sólo deja de
esconder.
This commit is contained in:
+13
-10
@@ -28,14 +28,14 @@
|
||||
},
|
||||
"by_profile": {
|
||||
"base": {
|
||||
"raices": 31,
|
||||
"clausura": 65,
|
||||
"sealed": 65
|
||||
"raices": 32,
|
||||
"clausura": 66,
|
||||
"sealed": 66
|
||||
},
|
||||
"cli": {
|
||||
"raices": 83,
|
||||
"clausura": 131,
|
||||
"sealed": 131
|
||||
"raices": 84,
|
||||
"clausura": 132,
|
||||
"sealed": 132
|
||||
},
|
||||
"escritorio-mirada": {
|
||||
"raices": 17,
|
||||
@@ -43,9 +43,9 @@
|
||||
"sealed": 41
|
||||
},
|
||||
"servidor": {
|
||||
"raices": 95,
|
||||
"clausura": 147,
|
||||
"sealed": 147
|
||||
"raices": 96,
|
||||
"clausura": 148,
|
||||
"sealed": 148
|
||||
}
|
||||
},
|
||||
"sin_perfil": 620,
|
||||
@@ -9894,11 +9894,14 @@
|
||||
"blocked_by": [],
|
||||
"unblocks": 0,
|
||||
"perfiles": [
|
||||
"base",
|
||||
"cli",
|
||||
"escritorio-cosmic",
|
||||
"escritorio-gnome",
|
||||
"escritorio-kde",
|
||||
"escritorio-mirada",
|
||||
"escritorio-sway"
|
||||
"escritorio-sway",
|
||||
"servidor"
|
||||
],
|
||||
"dependientes_total": 10
|
||||
},
|
||||
|
||||
@@ -46,6 +46,20 @@ paquetes = [
|
||||
# `--disable-shared` y ningún artefacto publicaba ese soname — otra vez el rootfs del lab tapando
|
||||
# el agujero. La variante ya existía en el corpus; sólo faltaba declararla.
|
||||
"zlib-shared",
|
||||
# `libffi-shared` (2026-09-13): el TERCER hueco de la misma familia, y lo encontró ampliar el
|
||||
# alcance de un vigía, no una imagen rota. `vigia-sonames.py` corría por defecto SÓLO sobre los
|
||||
# cinco perfiles de escritorio (`p.startswith("escritorio")`), así que `base`, `cli` y `servidor`
|
||||
# —el objetivo de la mudanza— nunca se miraron. Apuntándolo a ellos:
|
||||
#
|
||||
# == servidor 147 nodos · 183 sonames provistos · 1 sin proveedor
|
||||
# FALTA libffi.so.8 ← lo piden: python3
|
||||
#
|
||||
# O sea que `python3` volvía a ser INERTE en las tres imágenes, por el mismo mecanismo exacto que
|
||||
# `musl-shared` y `zlib-shared` arreglaron dos días antes: la receta canónica de libffi es
|
||||
# `--disable-shared`, ningún artefacto del cierre publica ese soname, y en el lab el agujero lo
|
||||
# tapa el rootfs de Alpine. La variante `libffi-shared` YA existía y ya estaba declarada en
|
||||
# `escritorio-mirada` y en otro perfil — sólo faltaba acá.
|
||||
"libffi-shared",
|
||||
# `zstd-cli` (2026-09-11): la distro comprime TODO con zstd —la imagen del lab
|
||||
# (`lab-image.tar.zst`), el respaldo al Storage Box, el `dd` remoto de una instalación— y la imagen
|
||||
# no traía con qué descomprimirlo: **un takana recién instalado no puede desempacar su propio
|
||||
|
||||
@@ -133,7 +133,15 @@ def main():
|
||||
colas = yupana.cargar_colas()
|
||||
perfiles = targets_mod.load()
|
||||
memb = yupana.membresia(colas, perfiles)
|
||||
quiero = args or [p for p in perfiles if p.startswith("escritorio")]
|
||||
# ⚠ **POR DEFECTO, TODOS LOS PERFILES.** Antes era `p.startswith("escritorio")`, y ese filtro
|
||||
# dejaba fuera a `base`, `cli` y `servidor` — o sea al objetivo de la mudanza. El coste se midió
|
||||
# el 2026-09-13 apuntándolo a mano: los tres tenían `FALTA libffi.so.8 ← lo piden: python3`, con
|
||||
# `python3` INERTE en las tres imágenes por el mismo mecanismo que `musl-shared` y `zlib-shared`
|
||||
# habían arreglado dos días antes. El vigía existía, el hueco estaba, y nadie lo miraba.
|
||||
# Es la tercera vez en dos días que un guardián de este repo mide menos de lo que su resumen
|
||||
# afirma (antes: `static-audit.sh` sin las colas, y el bloque de raíces sucias sólo sobre
|
||||
# perfiles). Un «0 huecos» sobre la mitad del sistema se imprime igual que uno sobre todo él.
|
||||
quiero = args or sorted(perfiles)
|
||||
huecos = 0
|
||||
for perfil in quiero:
|
||||
nodos = {n for n, ps in memb.items() if perfil in ps and n[0] != "wanted"}
|
||||
|
||||
Reference in New Issue
Block a user