Как получить полный список пакетов и версий для определенной серии Ubuntu, используя launchpadlib - PullRequest
0 голосов
/ 19 февраля 2019

Я ищу некоторую помощь (пример был бы превосходен), чтобы выяснить, как просто получить список имен пакетов для определенной версии Ubuntu.Например, используя веб-интерфейс, я мог бы просто выполнить поиск пакета в разделе Ubuntu на Launchpad, и он даст мне все подпакеты (компоненты?), Например: https://launchpad.net/ubuntu/+source/linux-meta

Что яЯ ищу это список исходящих пакетов + все их подпакеты и все их зависимости.В настоящее время я просто заинтересован в Ubuntu-17.10-desktop, но в будущем у меня есть глаза на автоматизацию.

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

Мне потребовалось некоторое время, чтобы добраться сюда, но этот код у меня есть, и я надеюсь, что он двигает меня в правильном направлении:

    import pandas as pd
    from launchpadlib.launchpad import Launchpad
    import launchpadlib as lp

    launchpad = Launchpad.login_anonymously('just testing', 'production', 
    cachedir, version='devel')
    ubuntu = launchpad.distributions['ubuntu']
    series = ubuntu.getSeries(name_or_version='17.10')
    archive = ubuntu.main_archive
    arch_series = series.getDistroArchSeries(archtag='amd64')

    manifest = pd.DataFrame(columns=['asset','pkg_set'])
    pkgs = launchpad.packagesets

    for i in range(34):
        name = pkgs.getBySeries(distroseries=series)[i].name
        sources_incl = pkgs.getBySeries(distroseries=series)[i].getSourcesIncluded()
        new_man=pd.DataFrame({'asset':sources_incl,'pkg_set':[name]*len(sources_incl)})
         manifest = manifest.append(new_man,ignore_index=True)
    manifest=manifest.sort_values(by=['asset'])

В идеале я должениметь возможность немного изменить этот скрипт, чтобы перейти на другие серии Ubuntu, особенно на новые версии.Тем не менее, я новичок в области извлечения API JSON, поэтому могу использовать некоторую помощь.

Например, зная, что в Artful есть 34 набора пакетов, к которым я пришел с помощью экспериментов.Было бы неплохо, если бы было какое-то свойство, которое я мог бы получить, чтобы узнать этот ответ для данной серии.

Кроме того, я хотел бы иметь возможность получать номера версий для каждого источника, специфичного для Artful, но яКажется, я не могу понять, как это сделать, кроме как через .getPublishedSources, то есть:

    name = 'acpid'
    comp = archive.getPublishedSources(source_name=name,distro_series=series)[0].component_name
    source = archive.getPublishedSources(source_name=name,distro_series=series)[0].source_package_name
    version = archive.getPublishedSources(source_name=name,distro_series=series)[0].source_package_version

Похоже, не разрешено извлекать всю базу данных, вместо этого вы должны указать имя_источника.

...