LinuxForum.Fans
Тема

Yum api на питоне.

Автор: u______32 10 сообщений 1705 просмотров
21.01.2015 16:03 #410521

Доброго времени суток.
Есть ли тут люди разбирающиеся в апи юма?
Подскажете как получить список пакетов для конкретного групплиста?

21.01.2015 18:03 #410551

yum groupinfo $GROUPNAME

22.01.2015 11:20 #410647
dyasny написал:
yum groupinfo $GROUPNAME

Нужно получить по апи из питона.

yum.comps.Group() вроде как это должен делать, но что-то у меня не выходит.

22.01.2015 13:02 #410659

Юм скоро закопают, переходи на dnf.

22.01.2015 14:11 · отредактировано #410665
Vascom написал:
Юм скоро закопают, переходи на dnf.

Dnf не в продакшене к сожалению.

22.01.2015 15:29 #410675

Собственно упёрся в проблему.
код:

Показать
text
import yum
yb = yum.YumBase()
yb.disablePlugins()
yb.setCacheDir()
repos = yb.repos.listEnabled()
destdir="/tmp/repo"
arch = "x86_64"
repoid="Myrepo"
baseurl="http://mirror.yandex.ru/centos/6.6/os/%s" % (arch)
imgurl="%s/images/install.img" % (baseurl)
repopath="Myrepo"
cachedir = "/tmp"     #yum.misc.getCacheDir()
yb.repos.setCacheDir(cachedir)
newrepo = yum.yumRepo.YumRepository(repoid)
newrepo.name = repopath
newrepo.baseurl = baseurl
newrepo.mirrorlist = None
newrepo.basecachedir = cachedir
newrepo.metadata_expire = 0
newrepo.timestamp_check = False
yb.repos.add(newrepo)
yb.repos.enableRepo(newrepo.id)
for name in repoid:
    yb.repos.enableRepo(name + ',')
yb.repos.doSetup()
yb.cleanRpmDB()
XM = yb.selectGroup(grpid='gnome')
for line in XM:
    print line

Возврат:

Показать
text
Загружены модули: langpacks
gnome-user-docs.noarch 0:3.14.2-1.fc21 - u
totem.x86_64 1:3.14.1-1.fc21 - u
gnome-system-monitor.x86_64 0:3.14.1-1.fc21 - u
gvfs-mtp.x86_64 0:1.22.3-1.fc21 - u
totem-nautilus.x86_64 1:3.14.1-1.fc21 - u
deja-dup.x86_64 0:32.0-3.fc21 - u
gnome-font-viewer.x86_64 0:3.14.0-1.fc21 - u
gnome-user-share.x86_64 0:3.14.0-2.fc21 - u
sane-backends-drivers-scanners.x86_64 0:1.0.24-12.fc21 - u
PackageKit-command-not-found.x86_64 0:1.0.4-1.fc21 - u
bijiben.x86_64 0:3.14.2-1.fc21 - u
shotwell.x86_64 0:0.20.2-1.fc21 - u
evolution.x86_64 0:3.12.9-1.fc21 - u
brasero-nautilus.x86_64 0:3.12.0-1.fc21 - u
orca.noarch 0:3.14.2-1.fc21 - u
gnome-disk-utility.x86_64 0:3.14.0-1.fc21 - u
gvfs-smb.x86_64 0:1.22.3-1.fc21 - u
setroubleshoot.x86_64 0:3.2.20-3.fc21 - u
gvfs-afp.x86_64 0:1.22.3-1.fc21 - u
gnome-documents.x86_64 0:3.14.2-1.fc21 - u
gvfs-afc.x86_64 0:1.22.3-1.fc21 - u
gnome-weather.noarch 0:3.14.1-1.fc21 - u
gnome-dictionary.x86_64 0:3.14.2-1.fc21 - u
gnome-terminal.x86_64 0:3.14.2-2.fc21 - u
gnome-screenshot.x86_64 0:3.14.0-1.fc21 - u
gnome-sound-recorder.noarch 0:3.14.2-1.fc21 - u
evolution-help.noarch 0:3.12.9-1.fc21 - u
libsane-hpaio.x86_64 0:3.14.10-5.fc21 - u
gnome-logs.x86_64 0:3.14.2-3.fc21 - u
empathy.x86_64 0:3.12.7-1.fc21 - u
baobab.x86_64 0:3.14.1-1.fc21 - u
NetworkManager-pptp-gnome.x86_64 1:0.9.8.2-6.fc21 - u
cheese.x86_64 2:3.14.2-1.fc21 - u
gucharmap.x86_64 0:3.14.2-1.fc21 - u
gnome-software.x86_64 0:3.14.2-2.fc21 - u
gnome-contacts.x86_64 0:3.14.2-1.fc21 - u
libproxy-mozjs.x86_64 0:0.4.11-10.fc21 - u
gnome-boxes.x86_64 0:3.14.2-2.fc21 - u
gnome-packagekit.x86_64 0:3.14.2-1.fc21 - u
NetworkManager-openvpn-gnome.x86_64 1:0.9.9.0-3.git20140128.fc21 - u
file-roller.x86_64 0:3.14.2-1.fc21 - u
gvfs-gphoto2.x86_64 0:1.22.3-1.fc21 - u
gnome-getting-started-docs.noarch 0:3.14.1-1.fc21 - u
PackageKit-gtk3-module.x86_64 0:1.0.4-1.fc21 - u
gvfs-fuse.x86_64 0:1.22.3-1.fc21 - u
gnome-maps.x86_64 0:3.14.2-1.fc21 - u
gnome-clocks.x86_64 0:3.14.1-2.fc21 - u
generic-logos.noarch 0:17.0.0-6.fc21 - u
gvfs-goa.x86_64 0:1.22.3-1.fc21 - u
nautilus.x86_64 0:3.14.2-1.fc21 - u
file-roller-nautilus.x86_64 0:3.14.2-1.fc21 - u
vinagre.x86_64 0:3.14.3-1.fc21 - u
sushi.x86_64 0:3.12.0-4.fc21 - u
brasero.x86_64 0:3.12.0-1.fc21 - u
gnome-backgrounds.noarch 0:3.14.1-1.fc21 - u
rhythmbox.x86_64 0:3.1-1.fc21 - u
gnome-classic-session.noarch 0:3.14.3-1.fc21 - u
aisleriot.x86_64 1:3.14.2-1.fc21 - u
mousetweaks.x86_64 0:3.12.0-3.fc21 - u
evolution-ews.x86_64 0:3.12.9-1.fc21 - u
deja-dup-nautilus.x86_64 0:32.0-3.fc21 - u
gnome-calculator.x86_64 0:3.14.1-1.fc21 - u
gnome-initial-setup.x86_64 0:3.14.2.1-2.fc21 - u
gnome-color-manager.x86_64 0:3.14.2-1.fc21 - u
eog.x86_64 0:3.14.3-1.fc21 - u
evince-nautilus.x86_64 0:3.14.1-7.fc21 - u
simple-scan.x86_64 0:3.14.0-1.fc21 - u
abrt-java-connector.x86_64 0:1.1.0-2.fc21 - u
nautilus-sendto.x86_64 1:3.8.2-1.fc21 - u

Process finished with exit code 0

Гном не установлен.
При этом в исходном код меняю Гном на base. Бейс установлен.
И получаю

Показать
text
Загружены модули: langpacks
Warning: Group base does not have any packages to install.

Process finished with exit code 0

Если же запускаю не в pyCharm а просто python mypython.py то в консоль валятся сообщения что такой-то пакет уже установлен и его обновлять не нужно.
Как забрать именно тот список пакетов, который он сравнивает?

22.01.2015 17:06 #410724

хмм, не знаю, но я бы просто кинул вопрос на ask.fedora

22.01.2015 17:54 · отредактировано #410734

Тогда чтобы не плодить сущностей.
В репах лежат xml групп листов.
Пример http://mirror.hostcomm.ru/centos/6.6-2015011200/os/x86_64/repodata/9e2ddcc42b44eb150ebc61dde29c997318d8330b92205b3dbb3a87bcc06d10be-c6-x86_64-comps.xml
Как из этого xml вытащить все элементы по пути " comps/grop/id(Base)/packagelist/packagereq(type={mandatory,default})"
Про lxml читал но что-то у меня возник ряд сложностей.
Или может быть есть какой-то другой вариант вытащить списки пакетов.

22.01.2015 18:10 #410739

xml в пайтоне обрабатывается двумя вариантами библиотек - etree или dom, имхо dom удобнее и функциональнее

29.01.2015 13:51 #411965

В общем кое-что на говнокодил если кому понадобится что-то подобное решать пишите подскажу.

Войдите или зарегистрируйтесь, чтобы ответить.