我正在寻找一些帮助(一个例子会很好)弄清楚如何只获取特定版本的 Ubuntu 的包名称列表。例如,使用 Web 界面我可以简单地在 Launchpad 的 Ubuntu 部分搜索一个包,它会给我所有的子包(组件?),例如:https : //launchpad.net/ubuntu/+源/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'])
Run Code Online (Sandbox Code Playgroud)
理想情况下,我应该能够稍微修改此脚本以更改为其他 Ubuntu 系列,尤其是较新的版本。但是,我是 API JSON 提取领域的新手,所以我可以使用一些帮助。
比如知道Artful里面有34个包集,我就是通过实验得出的。如果我可以获取一些属性来了解给定系列的答案,那就太好了。
此外,我希望能够获取每个源的版本号,特定于 Artful,但我似乎无法弄清楚除了 …