5

我正在寻找一些帮助(一个很好的例子)来弄清楚如何获取某个版本的 Ubuntu 的包名称列表。例如,使用 Web 界面,我可以简单地在 Launchpad 的 Ubuntu 部分中搜索一个包,它会给我所有的子包(组件?),例如:https ://launchpad.net/ubuntu/+源/linux元

我正在寻找的是上游包 + 所有子包及其所有依赖项的列表。我目前只对 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
    

似乎不允许获取整个数据库,而是您必须指定一个source_name.

4

0 回答 0