Рубрики
Без рубрики

Как сравнить RPM версии в Python?

Формирование проблем: сравните версии RPM в Python, данные два списка строк, которые являются версиями RPM, установленные в данный момент на вашем компьютере и версиях в репозитории или другой среде. Как сравнить эти списки, чтобы найти RPMS, устаревших? Пример: наша цель – определить список пакетов, которые … Как сравнить версии RPM в Python? Читать далее “

Автор оригинала: Chris.

Проблема разработки: Сравнить RPM версии в Python

  • Учитывая два списка строк, которые являются версиями RPM, установленные в данный момент на вашем компьютере и версиях в репозитории или другой среде.
  • Как сравнить эти списки, чтобы найти RPMS, устаревшие?

Пример : Наша цель – определить список пакетов, которые имеют другую более новую версию.

Input:
rpm_1 = ["my_package-3.2.2.rpm",
          "your_package-3.1.1.rpm",
          "their_package-3.1.1.rpm",
          "her_package-3.1.1.rpm",
          "his_package-3.1.1.rpm",
          "its_package-3.1.1.rpm"]
 rpm_2 = ["my_package-9.2.2.rpm",
          "your_package-3.1.1.rpm",
          "her_package-3.1.1.rpm",
          "their_package-9.1.1.rpm"]

Output:
Stale package my_package3.2.2.rpm has new version:  9.2.2
Stale package their_package3.1.1.rpm has new version:  9.1.1

Фон : RPM Это аббревиатура для Redhat Package Manager, и это бесплатная система управления пакетами с открытым исходным кодом для Linux для установки пакетов с помощью файлового суффикса .rpm Отказ Пакет RPM содержит произвольное количество файлов, которые необходимо извлечь в операционную систему Linux. Он используется для многих современных дистрибутивов Linux, таких как Fedora, CentOS, OpenSUSE и Oracle Linux.

Решение : Мы решаем проблему простым Словарь Версии Это отслеживает версию каждого из старых пакетов из RPM_1 и сравнивает их с версиями в новее Список RPM_2 Отказ

# RPM names assuming '-' indicates start of version number
rpm_1 = ["my_package-3.2.2.rpm",
         "your_package-3.1.1.rpm",
         "their_package-3.1.1.rpm",
         "her_package-3.1.1.rpm",
         "his_package-3.1.1.rpm",
         "its_package-3.1.1.rpm"]
rpm_2 = ["my_package-9.2.2.rpm",
         "your_package-3.1.1.rpm",
         "her_package-3.1.1.rpm",
         "their_package-9.1.1.rpm"]



def compare(rpm_1, rpm_2):
    versions = dict()
    for s in rpm_1:
        name, version = s.split('-')
        version = version[:-4]
        versions[name] = version

    for s in rpm_2:
        name, version = s.split('-')
        version = version[:-4]
        if name in versions and version != versions[name]:
            print('Stale package',
                  name + versions[name] + '.rpm',
                  'has new version: ', version)

compare(rpm_1, rpm_2)

Выходной вывод – это список пакетов, которые отличаются от имени версии по сравнению с по меньшей мере на одной старой имени пакета:

Stale package my_package3.2.2.rpm has new version:  9.2.2
Stale package their_package3.1.1.rpm has new version:  9.1.1

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.