Это старая версия документа!
#summary|RPM-build HOWTO with rpm-based linux #labels linux,Mandriva
*Сборка RPM-пакета для RPM-based дистрибутивов (HOWTO)*
_Примечание:_ пример сборки приведён на базе дистрибутива Mandriva Linux 2008.1 поэтому названия некоторых пакетов могут отличаться в вашем дистрибутиве. Также предполагается, что пакет будет собираться на чистой системе, т.е. без установленного необходимого ПО для этого.
*Шаг 1.* Подготовка системы для сборки пакета.
Прежде всего надо установить необходимое программное обеспечение. Для этого необходимо ввести следующие команды:
su //ввести логин от учетной записи root urpmi gcc-c++ libqt4-devel libopenssl-devel libaspell-devel rpm-build checkinstall git-core subversion qconf
*Шаг 2.* После установки ПО необходимо подготовить среду для работы программы rpm-build
_Примечание:_ замените выражение $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 , а так же полезно ознакомиться с информацией отсюда: http://wiki.mandriva.com/ru/Development/Howto/RPM
*Шаг 3.* Подготовка исходных кодов для сборки пакета
Теперь нам необходимо получить исходные коды и патчи.
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+ готов для сборки.
*Способ 1.* С помощью утилиты *checkinstall*
Переходим в каталог с исходными кодами программы и выполняем команды конфигурирования и сборки
cd /home/$USER/psi_dev/psi ./configure && make && checkinstall
Здесь вместо команды *make install* вводим команду *checkinstall*, которая соберёт пакет и поместит его в каталог *BUILD_ROOT/RPMS*, однако придётся ответить на некоторые вопросы.
*Способ 2.* С помощью утилиты rpm-build и spec-файла
После того, как были наложены патчи, необходимо запаковать папку 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 Jabber 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 Jabber,
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 Jabber/XMPP client that tries to strictly adhere to the XMPP drafts.
and Jabber JEPs. This means that in most cases, Psi will not implement a feature
unless there is an accepted standard for it in the Jabber 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
