
Я пишу инструмент для анализа изображений и имею полный доступ к файловой системе изображения.
Я хочу создать список всех установленных пакетов с информацией об имени и версии. Однако я не хочу запускать виртуальную машину, так как не доверяю ей.
Я знаю о таких командах, 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
базу данных с другого компьютера и теперь могу запрашивать ее пакеты.