¿Cómo puedo obtener una lista de paquetes centos instalados leyendo solo desde el sistema de archivos?

¿Cómo puedo obtener una lista de paquetes centos instalados leyendo solo desde el sistema de archivos?

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 -qapero 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 rpmpara consultar los paquetes, pero sin ejecutar la máquina virtual: si pones esorpmdbdentro de otro sistema de archivos falso.

Probé esto, parece que rpmbusca 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 rpmbase de datos de otra máquina y ahora puedo consultar sus paquetes.

información relacionada