Я ищу некоторую помощь (пример был бы превосходен), чтобы выяснить, как просто получить список имен пакетов для определенной версии 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
Похоже, не разрешено извлекать всю базу данных, вместо этого вы должны указать имя_источника.