fix(instalador): una herramienta que tiene alternativa se busca, no se exige
La resolucion de la herramienta que pone la etiqueta abortaba el guion entero si no la encontraba. Pero esa herramienta es opcional desde el commit anterior: si no esta, la etiqueta la escribe el propio binario del instalador, que viaja en el mismo medio. El resultado medido en una maquina que podia perfectamente adoptar: la instalacion fallaba arriba de todo con «falta la herramienta», sin llegar nunca al camino que si existia. No se habia roto nada, simplemente nadie podia usarlo. El sintoma es benigno —se planta antes de tocar el disco— pero el diagnostico que da es falso, y eso es lo que cuesta caro: manda a instalar una herramienta que no hace falta. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Semántico sayk'uy
Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.
1 qillqakuna · +6 −1
diff --git a/scripts/takana-install-partition.sh b/scripts/takana-install-partition.sh
index a65d4b91..ed510bb2 100755
--- a/scripts/takana-install-partition.sh
+++ b/scripts/takana-install-partition.sh
@@ -122,9 +122,14 @@ SFDISK=$(herramienta util-linux sbin/sfdisk sfdisk) || exit 1
# `e2label` sólo hace falta para `--adopt`, que no formatea: ahí la etiqueta por la que el arranque
# encuentra la raíz hay que ponerla a mano. Se resuelve acá arriba —con el resto— y sólo cuando se
# pidió adoptar, para no exigir una herramienta que el camino normal no usa.
+# ⚠ **Sin `|| exit 1`, y eso es el punto.** `e2label` es OPCIONAL: cuando no está, la etiqueta la
+# escribe `takana fs-label`, que viaja en el mismo medio. Con el `|| exit 1` que tenía, el script se
+# moría acá arriba —antes de tocar nada, sí, pero también antes de llegar al plan B— y la
+# instalación entera fallaba con «falta e2label» sobre una máquina que podía perfectamente adoptar.
+# Medido en QEMU el 2026-10-02. Una herramienta con alternativa no se exige: se busca.
E2LABEL=""
if [ -n "$ADOPT" ]; then
- E2LABEL=$(herramienta e2fsprogs sbin/e2label e2label) || exit 1
+ E2LABEL=$(herramienta e2fsprogs sbin/e2label e2label 2>/dev/null || true)
fi
# Releer la tabla es su propio problema: tras añadir una entrada, el kernel NO se entera solo y el
# device nuevo no aparece. `partx -a` se lo dice; `blockdev --rereadpt` es el ioctl crudo, que falla