[newbies] [join] Проверка корректности пакетирования
Николай Бурыкин
burykin на basealt.ru
Чт Янв 14 11:10:31 MSK 2021
>> Собрал один из пакетов, придерживаясь рекомендаций с wiki altlinux.org.
> А откуда именно? У нас просто беда, которую упоминал --
> есть штуки три "почти написанных" статьи по сборке пакета
> с нуля и ни одной завершённой.
>
> Исправлять такое толком получается скорее вдвоём, когда
> у одного человека ещё свежо недоумение, а второй понимает,
> что именно надо написать для исправления недосказанности.
> Как только освоился -- всё, поздно, "и так понятно".
В моём случае порядок чтения статей прошёл следующим образом:
1. В самую первую очередь, чтобы в общих чертах понимать порядок
действий, я посмотрел лекцию
<http://esyr.name/video/uneex/uneex_09_12_16.ogv> Георгия Курячего в
которой демонстрируется весь процесс сборки пакета.
1.1. Отдельно после просмотра внимательно пришлось почитать "Руководство
Hasher"
<https://www.altlinux.org/Hasher/%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE>,
там всё написано более чем понятно (по крайней мере у меня все вопросы
отпали после её прочтения на второй или третий раз).
2. Так же по алгоритму сборки пакета я ориентировался на статью "Сборка
пакета с РЕАЛЬНОГО НУЛЯ"
<https://www.altlinux.org/%D0%A1%D0%B1%D0%BE%D1%80%D0%BA%D0%B0_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%B0_%D1%81_%D0%A0%D0%95%D0%90%D0%9B%D0%AC%D0%9D%D0%9E%D0%93%D0%9E_%D0%9D%D0%A3%D0%9B%D0%AF>.
Из этой же статьи позаимствовал подход с tar.gz в .gear/rules
3. Дальше, в попытках осознать смысл своих действий я прочитал "О
стратегии сборки RPM пакетов"
<https://www.altlinux.org/%D0%9E_%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%B5%D0%B3%D0%B8%D0%B8_%D1%81%D0%B1%D0%BE%D1%80%D0%BA%D0%B8_RPM_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2>.
Здесь я получил представление о подготовке репозитория Git и написании
spec файла. К вопросу о том, почему же я тогда не переделал по
правильному исходный spec? Честно говоря тогда даже мысль такая не
пришла в голову. Подумалось, что разработчику вероятно виднее чем мне,
как должен выглядеть спек. В ретроспективе и после объяснений понимаю
что надо было сесть и внимательно переделать строго с требованиями
документации ALT. Буду знать.
3.1. В статье "О стратегии сборки" так же упоминается tar.gz в секции
"Написание .gear/rules" после второго упоминания такого подхода у меня
не оставалось сомнений, что так и надо делать.
3.2. Момент настройки с созданием gear tags в этой статье, после
прочтения статьи "Сборка пакета с реального нуля" меня немного ввел в
ступор (потому что в первой статье есть упоминание git tag, но не gear).
Но после чтения "Руководство по gear"
<https://www.altlinux.org/%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_gear>,
и разъяснений @bircoph о том, что подходы к ведению репозитория могут
быть разные, стало более-менее понятно.
Сейчас я бы дополнил этот список крайне внимательным чтением статей
"Spec:Summary" <https://www.altlinux.org/Spec#Summary>, и
"ALT_PAckaging_HOWTO" <https://www.altlinux.org/ALT_Packaging_HOWTO>.
Вероятно, удели я им немного больше внимания, ошибок было бы намного
меньше. Ну и наверное в закладках еще стоит держать
"Spec/Предопределенные макросы"
<https://www.altlinux.org/Spec/%D0%9F%D1%80%D0%B5%D0%B4%D0%BE%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D1%8B>.
В целом ссылки на большую часть полезных статей уже указаны в "Сборка
пакета с реального нуля". Возможно там не хватает чуть большей
детализации (например по части tar.gz или gear/git tags).
>> Репозиторий пока оформил на github - https://github.com/burykinne/freelan.
>> Собранный пакет и src.rpm приложил к письму.
> Достаточно было ссылки, ну и собранный пакет точно незачем
> -- ведь надо-то проверить, что из исходников собирается. :)
Хорошо, что я не положил собранный пакет с src.rpm туда же в
репозиторий, хотя изначально так и планировал. :)
>> По процессу сборки вроде бы всё было понятно, но, возможно,
>> не всё было понято правильно.
> Сразу бросился в глаза freelan-2.3.tar.gz -- подход с gear
> не предназначен для хранения для архивов, предполагается,
> что они-то как раз распаковываются в основную ветку либо
> по своим, но чтоб работал осмысленным образом git diff:
> http://bugzilla.altlinux.org/show_bug.cgi?id=36074#c12
>
> Здесь важно, по возможности прочтите обсуждение там.
> Надо понять, что обусловило создание коммита
> b4594ab7afbb51aa6c8e03e5bfd8618df4bf7289 --
> и исправить документацию.
Как я писал выше, подход с tar.gz мною был позаимствован с Wiki.
После прочтения обсуждения (в частности
https://bugzilla.altlinux.org/show_bug.cgi?id=36074#c22) сделал вывод
что так делать не следует (за исключением частных случаев). Хотя
указание этого метода в двух статьях меня всё таки смущает.
Плюс взял на заметку
https://bugzilla.altlinux.org/show_bug.cgi?id=36074#c34 . У меня в
коммитах такая же ошибка. Тоже буду иметь ввиду.
> freelan-2.3-alt-make-fix.patch я бы не делал, т.к. "?="
> переводится как "задать, если не задано" -- т.е. вызов
>
> make PRODUCT_PREFIX=/ PRODUCT_BIN_PREFIX=%_usr
>
> даст тот же результат, но не потребует обновлять патч
> при изменении контекста в Makefile.
Любопытно, я пробовал сделать так, перед тем, как создавать патч. Но оно
упорно не хотело собираться с путями, которые мне были нужны. Потом я
подсмотрел как это сделано в deb пакете, там был патч, и я подумал что
наверное так более правильно. И собственно говоря сделал его, с помощью
статьи https://www.altlinux.org/PatchHowto
P.S. Сейчас в тестовой ветке попробовал еще раз пересобрать с
PRUDUCT_PREFIX... - получилось без проблем с нужными путями. Жаль не
сохранил ветку с ранними экспериментами, на посмотреть что же я тогда не
правильно сделал там.
> Спек тоже "грязненький", как по альтовым (и моим) меркам
> -- непонятно, зачем sebastien.vincent@ решил вручную
> выставлять %name/%version/%release, когда их определяет
> сам rpmbuild на основании Name:/Version:/Release:, ну да
> это уж разве что ему пересказать. Прилагаю почти такой,
> как сделал бы сам (не стал эстетствовать с висячими "a"
> в %description, это бы добавило шума в патч); разберём:
Применил присланный патч и отправил в репозиторий. К документации впредь
буду относиться более внимательно. В частности к "ALT_PAckaging_HOWTO"
<https://www.altlinux.org/ALT_Packaging_HOWTO>. Надеюсь с следующим
спеком всё таки справлюсь самостоятельно :)
> Из дальнейших улучшений -- я бы сделал ещё initscript
> по мотивам /etc/init.d/template, но давайте к такому
> вернёмся уже после прохождения пакета в сизиф.
>
Постараюсь сделать initscript до прохождения пакета в сизиф, чтобы туда
он максимально законченным попал.
----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/devel-newbies/attachments/20210114/1f2729b0/attachment-0001.html>
Подробная информация о списке рассылки devel-newbies