rpmbuild: общие вопросы (как собрать пакеты для pidgin-2.8.0 и прочего...)

Cent OS, Scientific Linux

Модератор: Модераторы разделов

kotnaton
Сообщения: 234

rpmbuild: общие вопросы

Сообщение kotnaton »

Проблема сборки:

$ rpmbuild -bb pidgin.spec
ошибка: Неудовлетворенные зависимости сборки:
mozilla-nss-devel нужен для pidgin-2.8.0-0.i386

Хорошо, ремаркирую строчку BuildRequires: mozilla-nss-devel

итог: в ./configure возникает такая опция: "SSL Library/Libraries......... : Mozilla NSS"

...и компиляция с помощью rpmbuild завершается неудачно:

Код: Выделить всё

gevolution.c: In function 'get_config_frame':
gevolution.c:450:36: error: 'GTK_POLICY_AUTO' undeclared (first use in this function)
gevolution.c:450:36: note: each undeclared identifier is reported only once for each function it appears in
make[4]: *** [gevolution.lo] Error 1
make[4]: Leaving directory `.../rpmbuild/BUILD/pidgin-2.8.0/pidgin/plugins/gevolution'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `.../rpmbuild/BUILD/pidgin-2.8.0/pidgin/plugins'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `.../rpmbuild/BUILD/pidgin-2.8.0/pidgin'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `.../rpmbuild/BUILD/pidgin-2.8.0'
make: *** [all] Error 2
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.vgy4LH (%build)

Ошибки сборки пакетов:
    Неверный код возврата из /var/tmp/rpm-tmp.vgy4LH (%build)


Попытка внести вручную в раздел %build опции --enable-gnutls=yes \ --enable-nss=no тоже приводит к ошибке:

Код: Выделить всё

ошибка: Обнаружен(ы) установленный(е) (но не упакованный(е)) файл(ы):
   /usr/bin/purple-client-example
   /usr/bin/purple-remote
   /usr/bin/purple-send
   /usr/bin/purple-send-async
   /usr/bin/purple-url-handler
   /usr/lib/libpurple-client.so
   /usr/lib/libpurple-client.so.0
   /usr/lib/libpurple-client.so.0.8.0
   /usr/lib/perl5/i386-linux-thread-multi/perllocal.pod


Ошибки сборки пакетов:
    Обнаружен(ы) установленный(е) (но не упакованный(е)) файл(ы):
   /usr/bin/purple-client-example
   /usr/bin/purple-remote
   /usr/bin/purple-send
   /usr/bin/purple-send-async
   /usr/bin/purple-url-handler
   /usr/lib/libpurple-client.so
   /usr/lib/libpurple-client.so.0
   /usr/lib/libpurple-client.so.0.8.0
   /usr/lib/perl5/i386-linux-thread-multi/perllocal.pod


А так, вручную, собирается все без ошибок. Как все-таки сделать rpm-пакет для pidgin-а ?

Вообще-то, в deb для сборки пакетов есть возможность собрать пакет из уже готовых бинарников: просто копируем в папку будующую root-директорию с вложениями и создаем DEBIAN/control где прописываем имя и зависимости, и выполняем dpkg -b. Есть ли подобная возможность для rpm ? Тогда бы сложностей никаких, раз собирается успешно, можно было бы сделать проект root-папки: "make DESTDIR=~/rpmbuild/pidgin/ install" добавляем туда каталог и файл управления и закататываем в архив (dpkg -b) ???
бывает же такое ???
Спасибо сказали:
Аватара пользователя
agentprog
Сообщения: 362
Статус: Ad Astra per aspera
ОС: openSUSE 11.4, Arch

Re: rpmbuild: общие вопросы

Сообщение agentprog »

второй раз rpmbuild Вам говорит, что все собралось и даже установилось во временную директорию, но не все установленные файлы перечислены Вами в %files
No problems - just solutions!
Спасибо сказали:
kotnaton
Сообщения: 234

Re: rpmbuild: общие вопросы

Сообщение kotnaton »

Увы, spec для pidgin - просто безобразно составлен: ни один %if не работает :( Собрать пакеты pidgin можно, только надо ручками "вымарать" из pidgin.spec все зависимости других дистрибутивов. В моем случае понадобилось заремаркеровать все секции 'For SuSe', For Mandrake/Mandriva и тому подобное, строку:

Код: Выделить всё

#rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/libbonjour.so

и добавить

Код: Выделить всё

rm -f $RPM_BUILD_ROOT%{_libdir}/purple-2/libsametime.so
rm -f $RPM_BUILD_ROOT%{_libdir}/perl5/i386-linux-thread-multi/perllocal.pod

Проблема вроде решена, но вопрос остается: есть ли аналог "dpkg -b" для rpm ?
бывает же такое ???
Спасибо сказали:
Аватара пользователя
agentprog
Сообщения: 362
Статус: Ad Astra per aspera
ОС: openSUSE 11.4, Arch

Re: rpmbuild: общие вопросы

Сообщение agentprog »

kotnaton писал(а):
11.06.2011 15:22
есть ли аналог "dpkg -b" для rpm ?

не собирал пакеты для Дебиана, но судя по Вашему описанию некое подобие spec'а там все же пишется. rpm тоже можно собрать без исходников. лично я в секции %install просто прописывал install'ы для нужных файлов (install --mode=0755 prog_binary %{buildroot}%{prefix}/), а затем перечислил эти файлы в %files. возможно есть решение лучше, но мне для своих целей хватило. хотя, как мне кажется, проще написать свой spec, если спек от самого пиджина не работает, чтобы он сам и собирал все.
а какая версия rpm и для какого дистрибутива собираете?
No problems - just solutions!
Спасибо сказали:
kotnaton
Сообщения: 234

Re: rpmbuild: общие вопросы

Сообщение kotnaton »

agentprog писал(а):
11.06.2011 19:42
некое подобие spec'а там все же пишется

только шапка и зависимости, сам dpkg действует как элементарный архиватор с рекурсивной упаковкой, сценарии допустимы, но необязательны (для чего-то вроде команды ldconfig,rm и.т.п,)

agentprog писал(а):
11.06.2011 19:42
можно собрать без исходников. лично я в секции %install просто прописывал install'ы для нужных файлов (install --mode=0755 prog_binary %{buildroot}%{prefix}/), а затем перечислил эти файлы в %files. возможно есть решение лучше, но мне для своих целей хватило

Спасибо. Не догадался. Надо будет попробовать сделать пакет с cdrtools3 :) А вы можете дать какой-нибудь простенький пример ?


agentprog писал(а):
11.06.2011 19:42
а какая версия rpm и для какого дистрибутива собираете?

Russian Fedora Remix 15 и RPM-4.9.0
бывает же такое ???
Спасибо сказали:
Аватара пользователя
agentprog
Сообщения: 362
Статус: Ad Astra per aspera
ОС: openSUSE 11.4, Arch

Re: rpmbuild: общие вопросы

Сообщение agentprog »

kotnaton писал(а):
11.06.2011 20:20
RPM-4.9.0

странно, что if'ы не заработали
kotnaton писал(а):
11.06.2011 20:20
А вы можете дать какой-нибудь простенький пример ?

скелет у меня в openSUSE может сделать rpmdev-newspec, может в федоре оно по-другому называется, если есть.
самый простой мой спек (make install не делалось, поэтому установка единственного бинарника install'ом):

Код: Выделить всё

# norootforbuild

Name:           ipv4calc
Version:        1.0
Release:        1
Summary:        IPv4 calculator

License:        GPLv2
Source0:        %{name}-%{version}.tar.gz

BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

Prefix:         /usr/bin

%description
ipv4calc is a tool for making simple calculations of netmask,
gateway and broadcast addresses using current IPv4
address and its netmask.


%prep
%setup -q


%build
qmake
make %{?_smp_mflags}


%install
rm -rf %{buildroot}
mkdir -p %{buildroot}%{prefix}
install --mode=0755 ipv4calc %{buildroot}%{prefix}/


%clean
rm -rf %{buildroot}


%files
%defattr(-, root, root)
%{prefix}/ipv4calc


%changelog
<...>Changelog here

некоторые теги из шапки прописаны в ~/.rpmmacros, поэтому тут не указаны.
No problems - just solutions!
Спасибо сказали:
Аватара пользователя
alv
Бывший модератор
Сообщения: 7275
Статус: Пенсионер в законе
ОС: Cintu

Re: rpmbuild: общие вопросы

Сообщение alv »

kotnaton писал(а):
11.06.2011 04:12
Как все-таки сделать rpm-пакет для pidgin-а ?

а если его просто взять из репозитория?
или таки нужен свой велосипед?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: rpmbuild: общие вопросы

Сообщение drBatty »

kotnaton писал(а):
11.06.2011 04:12
ошибка: Неудовлетворенные зависимости сборки:
mozilla-nss-devel нужен для pidgin-2.8.0-0.i386

Хорошо, ремаркирую строчку BuildRequires: mozilla-nss-devel

? почему не поставить mozilla-nss-devel?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
agentprog
Сообщения: 362
Статус: Ad Astra per aspera
ОС: openSUSE 11.4, Arch

Re: rpmbuild: общие вопросы

Сообщение agentprog »

drBatty писал(а):
12.06.2011 10:24
почему не поставить mozilla-nss-devel?

этот пакет может называться по-другому
No problems - just solutions!
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: rpmbuild: общие вопросы

Сообщение drBatty »

agentprog писал(а):
12.06.2011 11:50
этот пакет может называться по-другому

http://rpm.pbone.net/index.php3?stat=3&...l&srodzaj=3
не?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
AlexYeCu
Сообщения: 1137
ОС: fedora

Re: rpmbuild: общие вопросы

Сообщение AlexYeCu »

alv писал(а):
12.06.2011 07:26
kotnaton писал(а):
11.06.2011 04:12
Как все-таки сделать rpm-пакет для pidgin-а ?

а если его просто взять из репозитория?
или таки нужен свой велосипед?


Потому, что в репозитории 2.7.*. Неужели не очевидно?
Спасибо сказали:
kotnaton
Сообщения: 234

Re: rpmbuild: общие вопросы

Сообщение kotnaton »

Только добавлю от себя, что до недавних пор не пользовался pidgin постольку у меня в ростере есть контакты работающие с разными языковыми раскладками, и по этой причине я вынужден был работать в qutim, теперь новый pidgin может работать с раскладками собеседника.

Доброй ночи всем !

Прошу прощения, что переименовал тему, но открывать вторую фактически о том же, не решился, а для темы с pidgin это было бы оффтопом.

Сделал spec для сборки cdrtools3:

Код: Выделить всё

Name:        cdrtools
Version:    3.01a05
Summary:    Highly portable CLI CD/DVD/BluRay recording software
Release:    1
License:    CDDL
Source0:    %{name}-%{version}.tar.gz
BuildRoot:    ~/rpmbuild/BUILD/%{name}-%{version}-%{release}-root
Prefix:        /opt/schily

%description
Cdrtools is a set of command line programs that allows to record
CD/DVD/BluRay media.

The suite includes the following programs:

- cdrecord: A CD/DVD/BD recording program
- readcd: A program to read CD/DVD/BD media with CD-clone features
- cdda2wav: The most evolved CD-audio extraction program with
  paranoia support
- mkisofs: A program to create hybrid ISO9660/JOLIET/HFS filesystes
  with optional Rock Ridge attributes
- isodebug: A program to print mkisofs debug information from media
- isodump: A program to dump ISO-9660 media
- isoinfo: A program to analyse/verify ISO/9660/Joliet/Rock-Ridge
  Filesystems
- isovfy: A program to verify the ISO-9660 structures
- rscsi: A Remote SCSI enabling daemon

%prep
%setup -q

%build
./configure
make


%install
make install
for i in $( ls %{buildroot}/opt/schily/bin ) ; do rm %{buildroot}/usr/bin/$i ;  ln -s %{buildroot}/opt/schily/bin/$i %{buildroot}/usr/bin/ ; done
for i in $( ls %{buildroot}/opt/schily/share/doc ) ; do  rm %{buildroot}/usr/share/doc/$i ;  ln -s %{buildroot}/opt/schily/share/doc/$i %{buildroot}/usr/share/doc/ ; done
for i in $( ls %{buildroot}/opt/schily/share/man/man1 ) ; do  rm %{buildroot}/usr/share/man/man1/$i ;  ln -s %{buildroot}/opt/schily/share/man/man1/$i %{buildroot}/usr/share/man/man1/ ; done
for i in $( ls %{buildroot}/opt/schily/share/man/man5 ) ; do  rm %{buildroot}/usr/share/man/man5/$i ;  ln -s %{buildroot}/opt/schily/share/man/man5/$i %{buildroot}/usr/share/man/man5/ ; done
for i in $( ls %{buildroot}/opt/schily/share/man/man8 ) ; do  rm %{buildroot}/usr/share/man/man8/$i ;  ln -s %{buildroot}/opt/schily/share/man/man8/$i %{buildroot}/usr/share/man/man8/ ; done
for i in $( ls %{buildroot}/opt/schily/lib ) ; do  rm %{buildroot}/usr/lib/$i ;  ln -s %{buildroot}/opt/schily/lib/$i %{buildroot}/usr/lib/ ; done
for i in $( ls %{buildroot}/opt/schily/include ) ; do  rm %{buildroot}/usr/include/$i ;  ln -s %{buildroot}/opt/schily/include/$i %{buildroot}/usr/include/ ; done

%clean
rm -rf %{buildroot}

%files
%defattr(~,root,root)
%{prefix}/opt/schily/lib/*
%{prefix}/opt/schily/sbin/*
%{prefix}/opt/schily/bin/*
%{prefix}/opt/schily/sbin/*
%{prefix}/opt/schily/share/doc/*
%{prefix}/opt/schily/share/man/*/*

%changelog

Застревает уже в %prep.

Код: Выделить всё

rpmbuild --bb cdrt3.spec
Выполняется(%prep): /bin/sh -e /var/tmp/rpm-tmp.JKNynm
+ umask 022
+ cd /home/.../rpmbuild/BUILD
+ cd /home/.../rpmbuild/BUILD
+ rm -rf cdrtools-3.01a05
+ /bin/tar -xf -
+ /usr/bin/gzip -dc /home/.../rpmbuild/SOURCES/cdrtools-3.01a05.tar.gz
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd cdrtools-3.01a05
/var/tmp/rpm-tmp.JKNynm: line 34: cd: cdrtools-3.01a05: No such file or directory
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.JKNynm (%prep)


Ошибки сборки пакетов:
    Неверный код возврата из /var/tmp/rpm-tmp.JKNynm (%prep)

Чего я не так понял ?
бывает же такое ???
Спасибо сказали:
Аватара пользователя
agentprog
Сообщения: 362
Статус: Ad Astra per aspera
ОС: openSUSE 11.4, Arch

Re: rpmbuild: общие вопросы

Сообщение agentprog »

kotnaton писал(а):
13.06.2011 00:45
cd: cdrtools-3.01a05: No such file or directory

при распаковке архив должен создавать директорию вида имя-версия, как указано Вами в Version. если хорошо с английским, то тут описан макрос %setup, в частности, как указать директорию (-n).
дальше, в %install скомпилированная софтина должна ставиться в %{buildroot}%{prefix}, если собирается перемещаемый пакет, ну и куда-нибудь в %{buildroot}/usr, если не перемещаемый. поэтому нужно сделать либо ./configure --prefix=%{buildroot}%{prefix}, если поддерживается, либо читать документацию к софтине, как ее сконфигурировать, чтобы установить в другое место.
и еще. указание Prefix показывает, что Вы собираете перемещаемый пакет. а в результате действий в %install у Вас создаются файлы вне %{prefix}, поэтому rpmbuild тоже вывалится.
No problems - just solutions!
Спасибо сказали:
kotnaton
Сообщения: 234

Re: rpmbuild: общие вопросы

Сообщение kotnaton »

agentprog , спасибо огромное ! Но пока не способен исправить тот порок, о котором вы написали:
Prefix показывает, что Вы собираете перемещаемый пакет. а в результате действий в %install у Вас создаются файлы вне %{prefix}, поэтому rpmbuild тоже вывалится.


И кстати, да, вываливается уже новая ошибка:

Код: Выделить всё

/usr/bin/strip: unable to copy file '/home/.../rpmbuild/BUILDROOT/cdrtools-3.01-a05.i386/opt/schily/lib/librscg.a'; reason: Permission denied
ошибка: Неверный код возврата из /var/tmp/rpm-tmp.OKVEBS (%install)
бывает же такое ???
Спасибо сказали:
Аватара пользователя
agentprog
Сообщения: 362
Статус: Ad Astra per aspera
ОС: openSUSE 11.4, Arch

Re: rpmbuild: общие вопросы

Сообщение agentprog »

kotnaton писал(а):
13.06.2011 23:42
Но пока не способен исправить тот порок, о котором вы написали

можно просто не указывать Prefix, это необязательный тег.
kotnaton писал(а):
13.06.2011 23:42
вываливается уже новая ошибка

в defattr, если не хотите менять какой-то параметр, нужно ставить - (дефис), а не ~ (тильда). возможно это вгоняет rpmbuild в ступор и он выставляет права 0000 на файл.
No problems - just solutions!
Спасибо сказали:
kotnaton
Сообщения: 234

Re: rpmbuild: общие вопросы

Сообщение kotnaton »

Доброго вечера ! Дефис то я уже давно поставил, а сегодня я поставил OpenSuSe11.4 и попробовал на ней вот такую spec:

Код: Выделить всё

%define BUILD_ROOT ~/rpmbuild/BUILD
%define BUILD_RPMS ~/rpmbuild/RPMS
%define _topdir    ~/rpmbuild
%define _tmppath   ~/rpmbuild/tmp
%define name    cdrtools
%define version 3.01
%define release a05
%define buildroot  ~/rpmbuild/BUILD/%{name}-%{version}


Name:       %{name}
Version:    %{version}
Summary:    Highly portable CLI CD/DVD/BluRay recording software
Release:    %{release}
License:    CDDL
Source0:    %{_topdir}/SOURCES/%{name}-%{version}%{release}.tar.gz
BuildRoot:  %{BUILD_ROOT}/%{name}-%{version}


%description
Cdrtools is a set of command line programs that allows to record
CD/DVD/BluRay media.

The suite includes the following programs:

- cdrecord: A CD/DVD/BD recording program
- readcd: A program to read CD/DVD/BD media with CD-clone features
- cdda2wav: The most evolved CD-audio extraction program with
  paranoia support
- mkisofs: A program to create hybrid ISO9660/JOLIET/HFS filesystes
  with optional Rock Ridge attributes
- isodebug: A program to print mkisofs debug information from media
- isodump: A program to dump ISO-9660 media
- isoinfo: A program to analyse/verify ISO/9660/Joliet/Rock-Ridge
  Filesystems
- isovfy: A program to verify the ISO-9660 structures
- rscsi: A Remote SCSI enabling daemon

%prep
echo %{_topdir}/SOURCES/%{name}-%{version}%{release}.tar.gz
echo %{buildroot}
%setup -q

%build
make


%install

echo %{buildroot}
make DESTDIR=%{buildroot} install
mkdir %{buildroot}/usr/
mv %{buildroot}/opt/schily/bin %{buildroot}/usr/
mv %{buildroot}/opt/schily/sbin %{buildroot}/usr/
mv %{buildroot}/opt/schily/lib %{buildroot}/usr/
mv %{buildroot}/opt/schily/share %{buildroot}/usr/
mv %{buildroot}/opt/schily/include %{buildroot}/usr/


%clean

%files
%defattr(-,root,root)
/etc/default/*
/usr/lib/*
/usr/include/*/*
/usr/bin/*
/usr/sbin/*
/usr/share/doc/*/*
/usr/share/man/*/*

%changelog


Так как в OSS11.4 rpmbuild совсем "голенькая", сделал .rpmmacros

Код: Выделить всё

%packager internet
%distribution OSS
%_topdir ~/rpmbuild/
%buildroot ~/rpmbuild/BUILD/%{name}-%{version}


Все ! Пакет собран ! Уря !

agentprog, очень хорошо все объяснили, сейчас редко кто хорошо и терпеливо что-либо объяснит, Спасибо большое за терпение :)

Для Федоры нужно обязательно переопределить все %define не доверяя установкам по-умолчанию
бывает же такое ???
Спасибо сказали:
Аватара пользователя
landgraf
Сообщения: 2142
Статус: *бунту ненавистник
ОС: linux

Re: rpmbuild: общие вопросы

Сообщение landgraf »

AlexYeCu писал(а):
12.06.2011 18:00
Потому, что в репозитории 2.7.*. Неужели не очевидно?

не очевидно, сюда заглянуть перед велосипедостроением нельзя? Update request написать нельзя?
Спасибо сказали:
Аватара пользователя
agentprog
Сообщения: 362
Статус: Ad Astra per aspera
ОС: openSUSE 11.4, Arch

Re: rpmbuild: общие вопросы

Сообщение agentprog »

landgraf писал(а):
19.06.2011 14:04
заглянуть перед велосипедостроением нельзя? Update request написать нельзя?

не всегда могут устроить результаты работы мейнтейнера (нужна конкретно вот эта версия вот этой софтины, собранная вот с этими флагами), для этих целей в openSUSE есть целая велосипедофабрика под названием OBS, которая и для федоры вроде собирать rpm тоже умеет :)
No problems - just solutions!
Спасибо сказали:
Аватара пользователя
taaroa
Сообщения: 1319

Re: rpmbuild: общие вопросы

Сообщение taaroa »

agentprog писал(а):
19.06.2011 14:38
в openSUSE есть целая велосипедофабрика под названием OBS, которая и для федоры вроде собирать rpm тоже умеет :)

там замечательная «велосипедофабрика», которая вовсе не велосипедо-, а очень удобная штука для сборки пакетов под кучу дистрибутивов.
:wq
Спасибо сказали: