
Estoy escribiendo una herramienta para analizar imágenes y tengo acceso completo al sistema de archivos de una imagen.
Quiero generar una lista de todos los paquetes instalados con información de nombre y versión. Sin embargo, no quiero ejecutar la máquina virtual porque no confío en ella.
Conozco comandos como, rpm -qa
pero no estoy seguro de alguna forma de obtener los datos simplemente leyendo archivos (que debe ser lo que hace el comando rpm).
¡Cualquier ayuda es bienvenida!
Respuesta1
podrías extraer el rpmdb de tu sistema de archivos: todos los archivos bajo /var/lib/rpm/
.
Entonces aún podrías usar rpm
para consultar los paquetes, pero sin ejecutar la máquina virtual: si pones esorpmdbdentro de otro sistema de archivos falso.
Probé esto, parece que rpm
busca de forma predeterminada en su base de datos /usr/lib/sysimage/rpm
, así que hice lo siguiente:
mkdir -p /tmp/fakeroot/usr/lib/sysimage/rpm/
scp other-machine:/var/lib/rpm/* /tmp/fakeroot/usr/lib/sysimage/rpm/
rpm --root /tmp/fakeroot -qa
Como puede ver, copié la rpm
base de datos de otra máquina y ahora puedo consultar sus paquetes.