我正在寻找一些帮助(一个很好的例子)来弄清楚如何获取某个版本的 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
.