Просканируйте и получите пакеты, установленные в Ubuntu, вместе с версией

Просканируйте и получите пакеты, установленные в Ubuntu, вместе с версией

Есть ли какой-либо код Python для получения списка пакетов, установленных в Ubuntu, вместе с версией пакета? Я видел код Python наФормирование списка вручную установленных пакетов и запрос отдельных пакетов. Но там нет списка идентификаторов версий. Может кто-нибудь знает, как узнать версию установленных пакетов?

решение1

Я не уверен, есть ли существующий код для этого. Но вы можете посмотреть файл /var/lib/dpkg/status. Вся информация об установленных пакетах хранится в этом файле.

Написать код, который будет анализировать этот файл, довольно просто, даже если вы не очень хорошо разбираетесь в Python.

решение2

Не уверен, что это не следует перенести в askubuntu, но просто используйте тот же подход, что и в упомянутой теме. Запустите dpkg/dpkg-query, чтобы получить дамп всех данных, и используйте стандартные механизмы анализа Python, чтобы извлечь соответствующую информацию.

Конечно, поскольку вы уже выполняете форк, вы можете выполнить всю обработку текста непосредственно в bash.

В качестве альтернативы найдите файл состояния, содержащий версии, если таковые имеются ("Dir::Etc::Status"?). Этот подход будет самым чистым.

решение3

Передайте параметр -F( --format) aptitudeукажите, какие поля отображаются.

aptitude --disable-columns -F '%p %v' search '~A'

Из Python используйте apt_pkgмодуль из python-aptпакета.

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