Сборка свежего софта для Alt Linux Master 2.4 на примере Eric3.
1. Скачиваем свежий eric3 с официального сайта проекта
http://www.die-offenbachs.de/detlev/eric3.html, там же были файлы для
интернационализации проекта - можно скачть все, но если жалко трафика -
только отвечающий за русский язык. В итоге получилось два файла:
eric-3.6.0.tar.gz
eric-i18n-ru-3.6.0.tar.gz
2. Для идеологически правильной сборки под Alt необходим spec-файл. Его
можно получить несколькими способами, но все они сводятся к одному -
модификация spec-файла от старых аерсий этого пакета:
a) Взять src.rpm пакет с диска идущего в комплекте с инсталляционными
дисками или выкачать его из Инета. После этого распаковать и достать
spec-файл. Произвести необходимые изменения. Т.к. создатели дистрибутива
не гнались за самыми свежими версиями софта, а старались обеспечить
стабильную работу дистрибутива в целом, то скорее всего в spec-файле
придется произвести много модификаций, потому что сборка может
сильно отличаться от версии к версии.
б) Попытаться найти src.rpm пакет с наиболее свежей версией данного ПО.
В Alt Linux для этого можно воспользоваться репозитарием Sisyphus. Не
стоит забывать, что обновления из него могут не всегда работать на
рабочей системе или вообще привести систему в нерабочее состояние.
Поэтому spec-файлы из Sisyphus нужно править с особым вниманием, выявляя
"тонкие" моменты и несуществующие зависимости.
в) Стоит заглянуть в раздел backports на сайте Alt Linux - в нем
содержаться версии ПО из Sisyphus, но адаптированные к конкретному
дистрибутиву от Alt, т.е. ПО будет содержать правильные зависимости, а
сборка и работа протестирована с учетом тех библиотек и ПО, которые идут
по-умолчанию в составе дистрибутива. Зависимости в spec-файлах из
backports скорее всего править не придется, и модификации в этих файлах
будут скорее всего косметическими.
Итак, на 2005.01.25 в backports
(ftp://ftp.altlinux.com/pub/distributions/ALTLinux/backports/2.4/) была
"более свежая" версия Eric3, чем в идущая по умолчанию в дистрибутиве.
Скачиваем - eric-3.5.1-alt1.M24.1.src.rpm. После преобразования rpm
архива в cpio, можем нормально зайти в файл с помощью mc:
$ rpm2cpio eric-3.5.1-alt1.M24.1.src.rpm > eric-3.5.1-alt1.M24.1.src.cpio
Находим там spec-файл и посмотрим на его содержимое - особенно
интересует секция с зависимостями, требуемыми при установке:
BuildRequires: python-module-PyQt python-module-sip XFree86-libs
Вот. А python-module-PyQt и python-module-sip нет в составе дистрибутива
- они нашлись тут же, в backports:
python-module-PyQt-3.13-alt3.M24.1.src.rpm
python-module-sip-4.1.1-alt0.M24.1.src.rpm
Сразу скажу, что для сборки этих пакетов необходимо обновить
rpm-build-python и qscintilla, свежие версии которых можно найти
опять же в backports:
rpm-build-python-0.15-alt0.M24.1.src.rpm
qscintilla-1.4-alt0.M24.1.src.rpm
$ rpmbuild --rebuild rpm-build-python-0.15-alt0.M24.1.src.rpm
$ rpmbuild --rebuild --target athlon qscintilla-1.4-alt0.M24.1.src.rpm
Добавим их к локальному репозитарию, перестроим репозитарий и установим
эти пакеты с помощью Synaptic.
Теперь попробуем собрать сначала sip, установим его, так как PyQt требует
его devel пакет. Потом соберем и установим PyQt (тем
более что в рассылке Alt Linux Community все-равно предлагалось
поставить обновленную версию PyQt - в предыдущей были недочеты):
$ rpmbuild --rebuild --target athlon \
python-module-sip-4.1.1-alt0.M24.1.src.rpm
$ rpmbuild --rebuild --target athlon \
python-module-PyQt-3.13-alt3.M24.1.src.rpm
Если в ходе сборки выдались сообщения об неудовлетворенных зависимостях,
то установим недостающие пакеты.
Сейчас скопируем eric.spec из cpio архива в каталог ~/RPM/SPECS/. А
файлики относящиеся к новой версии eric в ~/RPM/SOURCES/. Произведем
адаптацию eric.spec к новым исходникам:
а) Поправим определения макросов, описывающих версию (version) и релиз
(release), стоящие обычно где-то в самом начале spec-файла.
б) Из секции где перечисляются файлы с исходниками, уберем упоминания о
не нужных нам файлах интернационализации (так называемые i18n), оставим
только русский. Разархивация этих исходников происходит в секции %prep
командой %setup, поэтому там тоже нужно сказать, что файлов с
исходниками теперь два.
в) Для будущих поколений изменим секцию %changelog.
Вот patch-файл накладываемый на spec.
begin eric.spec.patch eric.spec.orig 2005-01-25 14:35:04 +0300
+++ eric.spec 2005-01-25 14:43:56 +0300
@ -1,5 +1,5 @@
-%define version 3.5.1
-%define release alt1.M24.1
+%define version 3.6.0
+%define release alt0
#define snap_date 20041223
Summary: The eric3 is a Python IDE
@ -14,9 +14,7 @@
%else
Release: %release
Source0: eric-%version.tar.gz
-Source1: eric-i18n-de-%version.tar.gz
-Source2: eric-i18n-fr-%version.tar.gz
-Source3: eric-i18n-ru-%version.tar.gz
+Source1: eric-i18n-ru-%version.tar.gz
%endif
License: GPL
Group: Development/Python
@ -59,7 +57,7 @@
%ifdef snap_date
%setup -n %name-snapshot-%snap_date -b1 -b2 -b3
%else
-%setup -n %name-%version -b1 -b2 -b3
+%setup -n %name-%version -b1
%endif
%build
@ -92,6 +90,10 @@
%doc README LICENSE.GPL HISTORY
%changelog
+* Tue Jan 25 2005 Alexandr Kolotov <ko***@k*****.ru> 3.6.0-alt0
+- new release 3.6.0
+- removed -fr and -de i18n files.
+
* Tue Jan 04 2005 Ivan Fedorov <ns@a*****.ru> 3.5.1-alt1.M24.1
- Backport to Master 2.4
end eric.spec.patch Применить этот patch-файл можно следующей командой в каталоге, где
находится eric.spec:
$ patch -p0 -i eric.spec.patch
3. Сборка пакета в нашем случае является самым простым пунктом:
$ rpmbuild -ba eric.spec
В каталоге ~/RPM/RPMS/noarch/ теперь находится rpm-пакет с Eric3, а в
каталоге ~/RPM/SRPMS/ src.prm пакет подготовленный для пересборки в
случае чего.
eric-3.6.0-alt0.noarch.rpm
eric-3.6.0-alt0.src.rpm
На этом сборка закончена.