Примечание: Пример сборки приведён на базе дистрибутива Mandriva Linux 2008.1 поэтому названия некоторых пакетов могут отличаться в вашем дистрибутиве. Также предполагается, что пакет будет собираться на чистой системе, т.е. без установленного необходимого ПО для этого.
Прежде всего надо установить необходимое программное обеспечение. Для этого необходимо ввести следующие команды:
su //ввести логин от учетной записи root urpmi gcc-c++ libqt4-devel libopenssl-devel libaspell-devel rpm-build checkinstall git-core subversion qconf
Примечание: Замените выражение $USER на имя вашего пользователя в системе
В каталоге /home/$USER/ создаём файл .rpmmacros со следующим содержимым:
%_topdir /home/$USER/BUILD_ROOT %_sourcedir %{_topdir}/SOURCES %_specdir %{_topdir}/SPECS %_builddir %{_topdir}/BUILD %dist .mdv2008.1 //приведён как пример, и может меняться в зависимости от вашего дистрибутива; для Fedora Core это значение может быть .fc8 %packager YOUR_NAME %vendor VENDOR_NAME %_signature gpg %_gpg_path /home/$USER/.gnupg %_gpg_name идентификатор_ключа %_gpgbin /usr/bin/gpg
Примечание: Создать персональный ключ можно командой gpg –gen-key. Посмотреть идентификатор ключа можно командой gpg –list-key в секции pub после слэша (“/”).
Далее создаём необходимые директории:
cd /home/$USER mkdir BUILD_ROOT cd BUILD_ROOT mkdir BUILD mkdir RPMS mkdir SOURCES mkdir SPECS mkdir SRPMS
Теперь ваша система готова для сборки RPM-пакета.
P.S. Для создания необходимых файлов и папок (применительно к Mandriva) можно воспользоваться скриптом Rpmsetup.sh, а также полезно ознакомиться с информацией отсюда.
Теперь нам необходимо получить исходные коды и патчи.
cd /home/$USER mkdir psi_dev cd psi_dev git clone git://git.psi-im.org/psi.git cd psi git submodule init git submodule update git pull git submodule update cd iris git clone git://git.psi-im.org/iris.git cd /home/$USER/psi_dev svn co http://psi-dev.googlecode.com/svn/trunk/patches/ cp /home/$USER/psi_dev/patches/*diff /home/$USER/psi_dev/psi cp /home/$USER/psi_dev/patches/series.txt /home/$USER/psi_dev/psi cd /home/$USER/psi_dev/psi for f in *diff; do patch -p1 -i "${f}"; done
Далее нам нужно исправить в файле applicationinfo.cpp текущую ревизию, заменить ХХХ на значение текущей ревизии из svn.
Для этого нужно создать следующий файл rev.sh в каталоге psi_dev.
#!/bin/sh pkgrel=`svnversion "/home/$USER/psi_dev/patches"` cd psi/src sed "s/\(.xxx\)/.${pkgrel}/" -i "applicationinfo.cpp"
и запустить его командой
sh rev.sh
Теперь исходный код Psi+ готов для сборки.
Переходим в каталог с исходными кодами программы и выполняем команды конфигурирования и сборки
cd /home/$USER/psi_dev/psi ./configure && make && checkinstall
Здесь вместо команды make install вводим команду checkinstall, которая соберёт пакет и поместит его в каталог BUILD_ROOT/RPMS, однако придётся ответить на некоторые вопросы.
После того, как были наложены патчи, необходимо запаковать папку psi в архив и скопировать её в BUILD_ROOT/SOURCES
mv psi psi-0.14_dev tar -pczf psi-0.14_dev.tar.gz psi-0.14_dev cp psi-0.14_dev.tar.gz /home/$USER/BUILD_ROOT/SOURCES
Далее в каталоге BUILD_ROOT/SPECS создаём файл psi.spec следующего содержания:
Summary: Client application for the XMPP network Name: psi Version: 0.14_dev Release: 3%{dist} License: GPL Group: Applications/Internet URL: http://code.google.com/p/psi-dev/ Source0: %{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: openssl-devel, gcc-c++, zlib-devel %{!?_without_freedesktop:BuildRequires: desktop-file-utils} %description Psi is the premiere Instant Messaging application designed for Microsoft Windows, Apple Mac OS X and GNU/Linux. Built upon an open protocol named XMPP, si is a fast and lightweight messaging client that utilises the best in open source technologies. The goal of the Psi project is to create a powerful, yet easy-to-use XMPP client that tries to strictly adhere to the XMPP drafts. and XMPP JEPs. This means that in most cases, Psi will not implement a feature unless there is an accepted standard for it in the XMPP community. Doing so ensures that Psi will be compatible, stable, and predictable, both from an end-user and developer standpoint. %prep %setup %build qconf ./configure \ --prefix="%{_prefix}" \ --bindir="%{_bindir}" \ --datadir="%{_datadir}"\ --release\ --no-separate-debug-info\ --enable-plugins \ /*эта строчка включает компиляцию с интерфесом подключения плагинов*/ --enable-qtwebkit\ /*эта строчка включает компиляцию с webkit*/ --qtdir="$QTDIR" %{__make} %{?_smp_mflags} %install %{__rm} -rf %{buildroot} %{__make} install INSTALL_ROOT="%{buildroot}" # Install the pixmap for the menu entry %{__install} -Dp -m0644 iconsets/system/default/logo_128.png}} \ %{buildroot}%{_datadir}/pixmaps/psi.png}} ||: %post touch --no-create %{_datadir}/icons/hicolor || : %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : %postun touch --no-create %{_datadir}/icons/hicolor || : %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : %clean %{__rm} -rf %{buildroot} %files %defattr(-, root, root, 0755) %doc COPYING README TODO %{_bindir}/psi %{_datadir}/psi/ %{_datadir}/pixmaps/psi.png %{_datadir}/applications/psi.desktop %{_datadir}/icons/hicolor/*/apps/psi.png %exclude %{_datadir}/psi/COPYING %exclude %{_datadir}/psi/README
Переходим в каталог BUILD_ROOT/SPECS и запускаем сборку пакета
cd /home/$USER/BUILD_ROOT/SPECS rpmbuild -bb psi.spec
Опция -bb указывает программе на сборку бинарного пакета. После удачной сборки пакет можно забрать из директории BUILD_ROOT/RPMS/iXXX (в зависимости от архитектуры) и установить командой:
rpm -ihv psi-0.14_dev-3.mdv2008.1.i586.rpm
Примечание: Имя пакета приведено для примера.
Также можно добавить цифровую подпись для пакета, сделать это можно с помощью следующей команды:
rpm --addsign psi-0.13_dev-3.mdv2008.1.i586.rpm