我正在寻找一些帮助(一个很好的例子),弄清楚如何仅获取特定版本的Ubuntu的软件包名称列表。例如,使用Web界面,我可以简单地在Launchpad的Ubuntu部分中搜索一个包,它将为我提供所有子包(组件?),例如: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
似乎不允许提取整个数据库,而必须指定一个source_name。