Как получить список установленных пакетов CentOS, только прочитав из файловой системы?

Как получить список установленных пакетов CentOS, только прочитав из файловой системы?

Я пишу инструмент для анализа изображений и имею полный доступ к файловой системе изображения.

Я хочу создать список всех установленных пакетов с информацией об имени и версии. Однако я не хочу запускать виртуальную машину, так как не доверяю ей.

Я знаю о таких командах, rpm -qaно не уверен, есть ли способ получить данные, просто прочитав файлы (что, должно быть, и делает команда rpm).

Любая помощь будет очень кстати!

решение1

вы можете извлечь rpmdb из вашей файловой системы: все файлы в /var/lib/rpm/.

Тогда вы все равно сможете использовать его rpmдля запроса пакетов, но без запуска виртуальной машины: Если вы поместите этоrpmdbвнутри другой поддельной файловой системы.

Я попробовал это сделать, похоже, что rpmпо умолчанию поиск выполняется в базе данных в разделе /usr/lib/sysimage/rpm, поэтому я сделал следующее:

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

Как вы видите, я скопировал rpmбазу данных с другого компьютера и теперь могу запрашивать ее пакеты.

Связанный контент