vigia-sonames: dos falsos positivos menos — los cinco perfiles en CERO
NO hacía falta una receta de perl. `libperl.so` está en el artefacto, son 9,6 MB
en usr/lib/perl5/5.40.2/x86_64-linux/CORE/, y el binario la encuentra por su
RUNPATH, que apunta justo ahí. El vigía no la veía porque perl la construye con
-Duseshrplib y NO le pone SONAME: el código sólo registraba el nombre del fichero
`if son:`. Un ELF compartido sin SONAME se resuelve POR NOMBRE DE FICHERO, y eso
es exactamente lo que había que indexar.
El otro falso positivo era el último «hueco» del informe:
usr/lib/go/src/debug/elf/testdata/libtiffxx.so_ — un ELF de MUESTRA que Go
shipea para los tests de su propio paquete debug/elf, pidiendo libc.so.6 (glibc)
en una distro musl. Un binario que nadie ejecuta. `testdata/` no es cierre.
Importa arreglar un falso positivo aunque «sólo» sea ruido: un vigía que grita
en falso enseña a ignorarlo, y así es como libstdc++.so.6 —que SÍ rompía el
navegador en los cuatro escritorios— estuvo en esta misma salida sin que nadie
la mirara.
escritorio-mirada 41 nodos · 231 sonames · 0 sin proveedor
escritorio-kde 306 nodos · 2083 sonames · 0 sin proveedor
escritorio-gnome 190 nodos · 657 sonames · 0 sin proveedor
escritorio-cosmic 161 nodos · 498 sonames · 0 sin proveedor
escritorio-sway 201 nodos · 509 sonames · 0 sin proveedor
PROBADO CON UNA ROTURA A PROPÓSITO, porque un vigía todo-verde se ve igual que
uno roto. Quitando `runtime = ["gcc-libs"]` de firefox SOLO no pasa nada —atuq
lo declara también y es raíz de los mismos perfiles, así que la librería entra
igual; el primer control estaba mal montado—. Quitándolo de las DOS, kde y
cosmic vuelven a reportar libstdc++.so.6 y libgcc_s.so.1 exactamente. Restaurado
después.
This commit is contained in:
+5
-11
@@ -1,11 +1,5 @@
|
||||
== escritorio-mirada 41 nodos · 136 sonames provistos · 1 sin proveedor
|
||||
FALTA libperl.so ← lo piden: perl
|
||||
== escritorio-kde 306 nodos · 1387 sonames provistos · 1 sin proveedor
|
||||
FALTA libperl.so ← lo piden: perl
|
||||
== escritorio-gnome 190 nodos · 517 sonames provistos · 1 sin proveedor
|
||||
FALTA libperl.so ← lo piden: perl
|
||||
== escritorio-cosmic 161 nodos · 390 sonames provistos · 1 sin proveedor
|
||||
FALTA libperl.so ← lo piden: perl
|
||||
== escritorio-sway 201 nodos · 402 sonames provistos · 2 sin proveedor
|
||||
FALTA libc.so.6 ← lo piden: go
|
||||
FALTA libperl.so ← lo piden: perl
|
||||
== escritorio-mirada 41 nodos · 231 sonames provistos · 0 sin proveedor
|
||||
== escritorio-kde 306 nodos · 2083 sonames provistos · 0 sin proveedor
|
||||
== escritorio-gnome 190 nodos · 657 sonames provistos · 0 sin proveedor
|
||||
== escritorio-cosmic 161 nodos · 498 sonames provistos · 0 sin proveedor
|
||||
== escritorio-sway 201 nodos · 509 sonames provistos · 0 sin proveedor
|
||||
|
||||
@@ -84,6 +84,15 @@ def escanear(nodos):
|
||||
for raiz, _, ficheros in os.walk(d):
|
||||
for fn in ficheros:
|
||||
p = os.path.join(raiz, fn)
|
||||
# ⚠ `testdata/` NO ES CIERRE (2026-09-06). Go shipea su árbol de fuentes entero, y
|
||||
# `usr/lib/go/src/debug/elf/testdata/` trae ELF de MUESTRA para los tests de su
|
||||
# propio paquete `debug/elf`. Uno de ellos pide `libc.so.6` —glibc— y el vigía lo
|
||||
# contaba como dep de ejecución del perfil sway: un binario que nadie ejecuta,
|
||||
# pidiendo una libc que esta distro no usa. Era el último «hueco» del informe y era
|
||||
# falso. Mismo criterio que el `libperl.so` de abajo: el ruido de un vigía es lo que
|
||||
# enseña a ignorarlo.
|
||||
if "/testdata/" in p:
|
||||
continue
|
||||
if os.path.islink(p):
|
||||
# un symlink `libfoo.so.1 -> libfoo.so.1.2.3` TAMBIÉN provee ese nombre
|
||||
if ".so" in fn:
|
||||
@@ -98,6 +107,22 @@ def escanear(nodos):
|
||||
provee.update(son)
|
||||
if son:
|
||||
provee.add(fn)
|
||||
elif ".so" in fn:
|
||||
# ⚠ ELF COMPARTIDO **SIN SONAME**: provee por NOMBRE DE FICHERO (2026-09-06).
|
||||
# Sin esta rama el vigía daba un hueco FALSO en los cinco perfiles:
|
||||
#
|
||||
# FALTA libperl.so ← lo piden: perl
|
||||
#
|
||||
# y `libperl.so` estaba ahí, 9,6 MB, en
|
||||
# `usr/lib/perl5/5.40.2/x86_64-linux/CORE/`. Perl la construye con
|
||||
# `-Duseshrplib` y NO le pone SONAME: el binario la encuentra por su
|
||||
# `RUNPATH`, que apunta a ese CORE. O sea que el enlace resuelve por NOMBRE
|
||||
# DE FICHERO, y eso es exactamente lo que hay que indexar.
|
||||
#
|
||||
# Importa arreglarlo aunque «sólo» sea un falso positivo: un vigía que grita
|
||||
# en falso enseña a ignorarlo, y así es como `libstdc++.so.6` —que sí rompía
|
||||
# el navegador— estuvo en esta misma salida sin que nadie lo mirara.
|
||||
provee.add(fn)
|
||||
for n in need:
|
||||
pide.setdefault(n, set()).add(nombre)
|
||||
return provee, pide
|
||||
|
||||
Reference in New Issue
Block a user