Автоустановка пакетов из spec

Подскажите команду для автоустановки пакетов из spec, что-то на подобия yum-builddep из fedora.

rpmbuild -bb

другого не знаю, и будет не установка, а собранный rpm

Он не доустанавливает зависимости.

~> cnf yum-builddep
Программу ‘yum-builddep’ можно найти в следующем пакете:

  • yum-utils путь: /usr/bin/yum-builddep, репозиторий: zypp (repo-oss) ]

admsasha wrote:

> Он не доустанавливает зависимости.

rpm при сборке автоматически вычисляет зависимости, и пропишет их в
метаданные пакета.

Я имел введу BuildRequires из spec.

Видать его не поддерживают, поэтому я и предположил, что у opensuse своя подобная утилита.

Traceback (most recent call last):
File “/usr/bin/yum-builddep”, line 139, in <module>
util = YumBuildDep()
File “/usr/bin/yum-builddep”, line 41, in init
self.main()
File “/usr/bin/yum-builddep”, line 66, in main
self.get_build_deps()
File “/usr/bin/yum-builddep”, line 116, in get_build_deps
self.setupSourceRepos()
File “/usr/bin/yum-builddep”, line 77, in setupSourceRepos
archlist = rpmUtils.arch.getArchList() + ‘src’]
NameError: global name ‘rpmUtils’ is not defined

Пакет rpm-python (Привязки Python для манипулирования RPM-пакетами) установлен?

admsasha wrote:

> Я имел введу BuildRequires из spec.

Если вы имеете ввиду source-пакет из репозитория, тогда используется
zypper:

‘zipper si package-name’

Должен установиться пакет с исходниками и все зависимости для сборки.
Надеюсь, я правильно понял.

Установлено два пакета
rpm-python и python3-rpm

Нет, не правильно. Spec находится локально. Нужно типа
#yum-builddep ./myspec.spec
И что бы он автоустановил все BuildRequires и requires, как это делает таже fedora или mageia/rosa

Нет, не правильно. Spec находится локально.

Полагаю, с zypper так не получится.

В остальном выглядит так:

22:46 kent@lazy ~ % yum-builddep
zsh: command not found: yum-builddep
[1]    11240 exit 127   yum-builddep
                        
Программу 'yum-builddep' можно найти в следующем пакете:
  * yum-utils  путь: /usr/bin/yum-builddep, репозиторий: zypp (openSUSE:Factory:Oss) ]

Try installing with:
    sudo zypper install yum-utils

22:46 kent@lazy ~ % sudo zypper install yum-utils
root's password:
Загрузка данных о репозиториях...
Чтение установленных пакетов...
Разрешение зависимостей пакетов...

Будут установлены следующие НОВЫЕ пакеты:
  python-gpgme python-iniparse python-yum yum yum-metadata-parser yum-utils 

6 новых пакетов для установки.
Полный размер загрузки: 715,8 KiB. После этой операции будет использовано дополнительно 2,9 MiB.
Продолжить? [y/n/?] (y): 

Похоже, эта штука не работает.

# yum-builddep filezilla     
Traceback (most recent call last):
  File "/usr/bin/yum-builddep", line 139, in <module>
    util = YumBuildDep()
  File "/usr/bin/yum-builddep", line 41, in __init__
    self.main()
  File "/usr/bin/yum-builddep", line 66, in main
    self.get_build_deps()
  File "/usr/bin/yum-builddep", line 116, in get_build_deps
    self.setupSourceRepos()
  File "/usr/bin/yum-builddep", line 77, in setupSourceRepos
    archlist = rpmUtils.arch.getArchList() + 'src']    
NameError: global name 'rpmUtils' is not defined
[1]    11373 exit 1     yum-builddep filezilla

Вижу, что никому не нужно:

% osc maintainer -Aev yum-utils 
Defined in package: system:packagemanager/yum-utils 
  bugowner of yum-utils : 
   ug@suse.com

  maintainer of yum-utils : 
   ug@suse.com

Defined in package: openSUSE:12.2/yum-utils 
  bugowner of yum-utils : 
   ug@suse.com

  maintainer of yum-utils : 
   -

Defined in project:  openSUSE:12.1
  bugowner of yum-utils : 
   -

  maintainer of yum-utils : 
user 'group:factory-maintainers' not found
user 'group:autobuild-team' not found
   -

 % osc log system:packagemanager/yum-utils
----------------------------------------------------------------------------
r5 | coolo | 2011-08-03 13:31:29 | 709197da2f4f0ff0d29111ffc9b56996 | unknown | 

sync with O:F
----------------------------------------------------------------------------
r4 | coolo | 2011-08-03 13:31:22 | 329df0ba4de481a076b64eee70a0b288 | unknown | 

prepare_spec
----------------------------------------------------------------------------
r3 | coolo | 2011-08-03 13:31:16 | 1275b481e2c8735aa9c238d18d5ccf4f | unknown | 

converted link to branch
----------------------------------------------------------------------------
r2 | coolo | 2011-08-03 13:31:12 | d308af8cda2662078772e14dfbeb3c51 | unknown | 

<no message>
----------------------------------------------------------------------------
r1 | ug | 2011-02-10 13:34:09 | b0ae5db78854c04849de9afc64864e80 | 1.1.13 | 

added to factory for cobbler
----------------------------------------------------------------------------

Работает только с src.rpm. В man’е ничего не сказано о файле spec

SYNOPSIS
yum-builddep package

Предварительно, нужно будет настроить репозитории для yum, т.е. копировать
файлы *.repo из /etc/zypp/repos.d/ в /etc/yum/repos.d/ или создать символьные ссылки.

~> sudo yum-builddep /var/tmp/build-root/home/abuild/rpmbuild/SRPMS/skippy-xd-0.5.1~hg.1378192470-0.src.rpm 
Bad id for repo: Обновления-для-openSUSE-, byte = � 0
repo-non-oss                                                                                                                                  | 2.9 kB     00:00     
repo-oss                                                                                                                                      | 3.0 kB     00:00     
libXcomposite-devel-0.4.4-2.1.1.x86_64
libXext-devel-1.3.1-4.1.1.x86_64
libXinerama-devel-1.1.2-4.1.1.x86_64
libXrender-devel-0.9.7-4.1.1.x86_64
libXfixes-devel-5.0-5.1.1.x86_64
libXdamage-devel-1.1.4-2.1.1.x86_64
libXft-devel-2.3.1-4.1.1.x86_64
libpng12-compat-devel-1.2.50-3.1.1.x86_64
libjpeg8-devel-8.0.2-19.1.1.x86_64
giflib-devel-4.1.6-34.1.1.x86_64
zlib-devel-1.2.7-7.1.1.x86_64
--> Running transaction check
---> Package giflib-devel.x86_64 0:4.1.6-34.1.1 will be installed
--> Finished Dependency Resolution


=====================================================================================
 Package                                   Arch                                Version                                   Repository                             Size
=====================================================================================
Installing:
 giflib-devel                              x86_64                              4.1.6-34.1.1                              repo-oss                              7.9 k


Transaction Summary
=====================================================================================
Install       1 Package


Total download size: 7.9 k
Installed size: 14 k
Is this ok [y/N]:

В общем, это правильно.
Здесь openSUSE, а не Fedora. Нет у нас ‘yum’, и не ожидается.
Низкоуровневые операции с пакетами осуществляются средствами ‘rpm’.

Да мне собственно не yum нужен был, а метод автоустановки BuildRequires и requires из spec файла. Я yum привел для примера. В той же ROSA/Mageia это далается через urpmi. А вот в opensuse как то не оказалось такого.

в первом приближении

#! /bin/bash
packages=''
for i in (sed -e 's/BuildRequires: (\w\s+]$'/\1/) do
    $packages = "$packages $i"
done

zypper in $packages

Да мне собственно не yum нужен был, а метод автоустановки BuildRequires и requires из spec файла

BuildRequires реализуется скриптом, как выше написано.
Rrequires запишутся в метаданные пакета, и rpm их запросит при установке.

Интересует сборка пакетов? воспользуйтесь “Службой сборки”](https://build.opensuse.org/) с помощью веб-клиента или приложения командной строки](openSUSE:Руководство по использованию службы сборки — openSUSE Wiki).
Остановимся на приложении командной строки и локальной сборке пакетов.
Приложение командной строки создаст:

  1. изолированную от основной системы среду сборки - /var/tmp/build-root/

bin     .build.command  .build.log       dev  .guessed_dist  installed-pkg  lib64  proc      root  sbin  usr
.build  .buildenv       .build.packages  etc  home           lib            opt    .reorder  run   tmp   var
  1. кэш пакетов необходимых для сборки - /var/tmp/osbuild-packagecache/
    То и другое займёт место, но при современной ёмкости жёстких дисков - это капля в море.
    Службе сборки достаточно сообщить название пакета, заголовок ( коротко и ёмко, одной фразой о назначении программ, входящих в состав пакета) и описание (более подробно и развёрнуто, всё что сочтёте нужным сообщить). При локальной сборке Службе сборки нет необходимости передавать ни спек, ни архив с исходными текстами, ни исправления и дополнения.
    Собранные пакеты можете найти в /var/tmp/build-root/home/abuild/rpmbuild/RPMS/.

Я думал этот вариант, но не подходит из-за того, что бывают конструкции типа perl(DBI::blabla).