Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/devel/ОсобенностиСборкиПакетов ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Sisyphus/devel/ОсобенностиСборкиПакетов за 2005-09-12 21:41:26..

Особенности сборки пакетов



По результатам переписки разработчиков ALT Linux Team составлены советы по упаковке программ GTK, GNOME и KDE.
Они должны войти в книжку «ALT Linux Team и проект Sysiphus» проекта alt-docs.

Использование альтернатив


Создаём файл с описанием предоставляемой альтернативы в каталог /etc/alternatives/packages.d/ примерно так:


Не забываем записать


И 


pkg-config

Почему в pkg-config отключена рекурсия (особенность сборки в ALT).
Рекурсивный сбор --libs в принципе не нужен, более того — вреден, хотя бы потому что является источником огромного числа лишних зависимостей, которые потом должен обрабатывать apt и rpm.


Если программа не линкуется с какой-либо библиотекой, то весьма вероятно, что это ошибка в сборке библиотеки – библиотека использует функции из других библиотек, но с ними не слинкована. Ошибка эта практически везде, кроме как в ALT Linux прикрыта стандартным поведением pkg-config.


В качестве заглушки можно вписать

перед %configure, но лучше добиться исправления проблемной библиотеки (приложения). Пример исправления можно увидеть в спеке к libgtkmm2


MIME-типы

Файлы информации о MIME-типах.
В этих файлах хранится описание форматов файлов (их mime-type, комментарием, способом определения принадлежности к формату по MAGIC value и шаблону...)
См. подробнее
http://www.freedesktop.org/Standards/shared-mime-info-spec
http://www.freedesktop.org/Software/shared-mime-info


1. Если в пакете есть файлы /usr/share/mime/packages/*.xml, то при его установке, удалении, обновлении необходимо обновить и кеш базы mime-типов с использованием в spec-файле макросов


То есть в спеке должны быть секции:


И указаны зависимости:


2. Файлы из каталога %_datadir/mime-info/* не используется GNOME-программами, которые получают mime-информацию из пакета shared-mime-info.


Тем не менее эти файлы используются рядом других программ (например, KDE), так что их тоже надо паковать. При этом пакет не получает никаких дополнительных зависимостей.

Файлы schemas


При сборке в пакете установку schemas надо отключать:

так как эта процедура должна быть выполнена при установке пакета; под пользователем при сборке пакета это невозможно.


это рекомендуется вместо конструкции

при установке


В спеке должны быть секции:



в качестве параметров к %gconf2-(un)unstall может быть указано несколько названий.


Образец оформления секции %files:


В зависимостях пакета должно быть:

Файлы scrollkeeper


Нельзя упаковывать каталог и файлы из %_localstatedir/scrollkeeper, если они получаются при сборке, их надо удалить командой

в конце секции %install


В спеке должны быть секции:


В зависимостях пакета должно быть:


Если %make_install вызывает scrollkeeper-update и сборка прерывается по ошибке – перед %make_install
нужно сделать export OMF_DIR=%buildroot%_localstatedir/scrollkeeper


Файлы локализации


%find_lang вызывается в секции %install


Для программ GNOME указывается:


При этом find-lang кроме файлов переводов в %_datadir/locale ищет файлы справки Гном в %_datadir/gnome/help и .omf файлы в %_datadir/omf


Поэтому не нужно указывать в секции %files каталоги с locale (переводами), а также


Для программ KDE указывается:

При этом find-lang ищет файлы справки KDE в %_defaultdocdir/HTML


Далее секция %files оформляется следующим образом:


%find_lang, являющийся скриптом, имеет и другие параметры, делающие его более гибким.


Файлы меню


После перемещения в alt-docs необходимо совместить данный раздел с файлом ftp://ftp.altlinux.org/pub/people/zerg/menu/menu-packaging-howto-current.txt


Файл меню либо создаётся непосредственно заданием его содержимого, либо формируется. Перевод строк, содержащихся в меню, содержится в пакете menu. Формат файла меню частично описан ((http://lists.altlinux.ru/pipermail/community/2004-October/133634.html здесь). На основе файла меню, устанавливающегося в /usr/lib/menu, генерируются меню для всех оконных менеджеров, установленных
в системе.


Пример того, как обычно в спеке создают файл меню:


*РЕКОМЕНДУЕМЫЙ СПОСОБ:*
Как правило к программе прилагается файл .desktop, который уже содержит эту информацию, из него можно получить файл меню следующей командой в разделе %install:


При использовании этого скрипта в пакете
должна быть указана зависимость:


Каталог для файлов меню обычно создают командой:


Созданный файл меню устанавливается в каталог %_menudir. При установке или удалении пакета меню должно переформироваться,
для этого в спеке должны быть секции:

Они предназначены для переформирования меню при каждой установке/удалении пакета.


В секции %files:


Пережиток KDE-шного прошлого %_datadir/applnk тоже надо паковать, если имеется. При этом не появляется дополнительных зависимостей.


Сейчас *.desktop и menu-файлы существуют параллельно. %_menudir обязательно, а %_datadir/applications/*.desktop – нет. Когда-нибудь в далеком будущем бОльшая часть оконных менеджеров будет уметь самостоятельно читать %_datadir/applications. Тогда пакет menu станет не нужен.


Статичный вариант меню хранится в %_datadir/applications, а генерируемый из menu-файлов в – %_datadir/application-alt


KDE не особо при чем, %_datadir/applications и %_menudir – это общее для всех.


После сборки нового пакета и его установке обязательно проверяйте, что программа появилась в меню на своём месте и имеет нужную пиктограмму.


Обновление базы обрабатываемых форматов


В файлах desktop кроме названия программы, способа её запуска и комментария, обычно также указаны сведения о том, какие
форматы способна обрабатывать та или иная программа.


Подробнее см. http://www.freedesktop.org/Standards/desktop-entry-spec


Нижеописанное нужно только в случае если в %_datadir/applications/*.desktop есть


В спеке должны быть секции:


В пакете должна быть указана зависимость:


Используется вне зависимости от типа программы в пакете, и всегда должно быть указано.


Файлы bonobo


Пока ничего не знаю кроме того, что в %files пишется %_libdir/bonobo/servers/*

Статические библиотеки


Общей тенденцией является условная упаковка статических библиотек. Упаковываются они в пакет с суффиксом -devel-static.
Как правило, статические библиотеки не требуются, и поэтому в начале спеке ставится


При конфигурировании указывается

которое управляет сборкой статических библиотек.


При указании пакетов на упаковку


Тогда чтобы получить lib%name-devel-static, нужно пересобрать пакет с `--enable static'. Установка lib%name-devel-static автоматически ставит
на hold lib%name-devel и, следовательно, lib%name (если между пакетами правильные зависимости).

Установка файлов


В секции %install для установки файлов используется несколько способов


1.

(в случае если используется схема Makefile с DESTDIR)


2.

(она задаёт prefix и остальные пути по типу
prefix=/home/lav/tmp/%{name}-buildroot/usr)


Это для программ, которые не пытаются запоминать пути, куда их устанавливают, при установке, а делают это при configure.


3. Иной способ. Возможно, ручная установка с помощью %__install


Дополнительно


Будьте особенно внимательны при написании скриптов pre/post и прочих – используемые там пакеты должны быть прописаны в Requires.
Желательно не использовать перенаправление вывода в /dev/null.

Примеры использования


Смотрите в Сизифе пакеты ggv2, rythmbox, eog2, gthumb, totem, conglomerate, inkscape

Авторы


Yuri N. Sedunov <aris@altlinux.ru>, 2004
Vitaly Lipatov <lav@altlinux.ru>, 2004–2005
Sergey Turchin <zerg@altlinux.ru>, 2004
Alexey Tourbin <at@altlinux.ru>, 2005


09.11.2004, 21.01.2005

                             

Оглавление документа


Страницы, ссылающиеся на данную: AltLinux/Sisyphus/devel/СборкаПакетов


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]