Инструменты пользователя

Инструменты сайта


ru:rpm_build_howto

Это старая версия документа!


#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
ru/rpm_build_howto.1283728882.txt.gz · Последнее изменение: 2010/10/17 15:36 (внешнее изменение)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki