Чего почитать по сборке софта?

Здесь можно поговорить о чём угодно и сколько угодно.

Модератор: Модераторы разделов

Аватара пользователя
UnixNoob
Сообщения: 762
ОС: Slackware

Чего почитать по сборке софта?

Сообщение UnixNoob »

Приветствую. При чтении инструкций по созданию slackbuild в Slackware, или руководства о создании пакетов Void/Debian, возникает много вопросов касательно настройки сборки. Откуда берутся опции, какие из них мне нужны, какие нет, откуда берется информация о необходимости тех или иных переменных окружения, проще говоря мне явно не хватает какой-то базы, которая бы меня привела к понимаю как и что собрать. Что можно почитать в качестве базы из книг/статей на эту тему? Или как учились вы, если обошлись без литературы.
Спасибо сказали:

Аватара пользователя
SLEDopit
Модератор
Сообщения: 4784
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Чего почитать по сборке софта?

Сообщение SLEDopit »

Нет одного документа, который можно прочитать и просветиться. Тут всё зависит от языка и инструмента сборки. Для условного проекта на С скорее всего будут использоваться cmake какой, а для Java -- gradle, для питона свои заморочки для управления зависимостями. И так далее. Если хочется разобраться именно в дистрибутивостроении, то лучше один раз LFS прочитать, имхо.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18981
Статус: ✡ иностранный агент
ОС: Debian GNU/Linux

Re: Чего почитать по сборке софта?

Сообщение Bizdelnick »

Не встречал ничего такого. Да и вряд ли можно что-то универсальное в принципе написать по этому поводу. У каждой сборочной системы своя специфика. И документация по ним рассчитана на разработчика, а не сборщика.
Добавлено (20:24):
SLEDopit писал(а):
11.11.2021 20:20
Если хочется разобраться именно в дистрибутивостроении, то лучше один раз LFS прочитать, имхо.
Да, вероятно, это вариант. Я не читал. ☺
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
UnixNoob
Сообщения: 762
ОС: Slackware

Re: Чего почитать по сборке софта?

Сообщение UnixNoob »

SLEDopit писал(а):
11.11.2021 20:20
Тут всё зависит от языка и инструмента сборки. Для условного проекта на С скорее всего будут использоваться cmake какой, а для Java -- gradle, для питона свои заморочки для управления зависимостями. И так далее. Если хочется разобраться именно в дистрибутивостроении, то лучше один раз LFS прочитать, имхо.
Ну мне не дистрибутив надо создать, а пакет, отсутствующий в той или ином дистрибутиве. У них у каждого свои инструменты, но с этим более-менее все понятно. Выходит задача не простая, узнать про все сборочные инструменты, каждого ЯП, с которым столкнешься в софте.
Правда я в книгах по программированию про сборку софта тоже не вижу информации. Очень мало её обычно, достаточно для запуска того что написал, но не для создания чего-то готового, а просто чтобы исходник запустить у себя на машине.
Спасибо сказали:

Аватара пользователя
RusWolf
Сообщения: 457
ОС: Arch Linux x64 на BTRFS

Re: Чего почитать по сборке софта?

Сообщение RusWolf »

UnixNoob писал:
11.11.2021 19:49
возникает много вопросов касательно настройки сборки. Откуда берутся опции
Из readme, который идёт с исходником программы.
В нём обычно описаны варианты сборки и опции сборки.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18981
Статус: ✡ иностранный агент
ОС: Debian GNU/Linux

Re: Чего почитать по сборке софта?

Сообщение Bizdelnick »

RusWolf писал:
11.11.2021 20:48
Из readme, который идёт с исходником программы.
В нём обычно описаны варианты сборки и опции сборки.
Про опции там обычно крайне мало или вообще ничего.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Zer0
Сообщения: 253
ОС: Void, Slackware

Re: Чего почитать по сборке софта?

Сообщение Zer0 »

UnixNoob Для начала опции сборки хорошо бы классифицировать, их как минимум 2 типа: опции транслятора и опции определяемые программистом.
В бытность пользователем ОС FreeBSD, когда я только начал знакомиться с unix-like ОС, частенько запускал

Shell

./configure --h
(или --help), по быстрому не вспомню и там вываливалась куча опций с пояснениями зачем они нужны.

Возможно Вам чем-то поможет книга Артура Гриффитса GCC: The Complete Reference. В 2004 году она была издана на русском языке.

И конечно имеет смысл написать простенькую программу, но чтоб обязательно с опциями применение которых будет наглядно заметно при запуске программы и установке её пакета.
Memento mori ... сделай бэкап.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18981
Статус: ✡ иностранный агент
ОС: Debian GNU/Linux

Re: Чего почитать по сборке софта?

Сообщение Bizdelnick »

Zer0 писал(а):
11.11.2021 22:52
В бытность пользователем ОС FreeBSD, когда я только начал знакомиться с unix-like ОС, частенько запускал

Shell

./configure --h
(или --help), по быстрому не вспомню и там вываливалась куча опций с пояснениями зачем они нужны.
--help. Но это только в случае сборки autoconf. А в случае cmake, например, надо запускать cmake -LH <путь к исходникам>. А в других случаях — что-то ещё. И бывает, что всё равно приходится лезть в скрипты и смотреть глазами, что же там прописано.
Zer0 писал(а):
11.11.2021 22:52
Возможно Вам чем-то поможет книга Артура Гриффитса GCC: The Complete Reference. В 2004 году она была издана на русском языке.
Я так понимаю, вопрос был не про опции компилятора, а про конфигурирование сборки.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
UnixNoob
Сообщения: 762
ОС: Slackware

Re: Чего почитать по сборке софта?

Сообщение UnixNoob »

Bizdelnick писал:
11.11.2021 23:09
Я так понимаю, вопрос был не про опции компилятора, а про конфигурирование сборки.
Ну да. В целом т.к мне советовали научиться создавать slackbuild'ы, я решил что это не так сложно. Ну и хвалили систему сборки в Void, на некоторых ресурсах. А оказалось что мне надо изучить инструменты сборки каждого языка, если говорить о сборке из исходников, а не перепаковке бинарника. Хотя и при переупаковке всплывают какие-то переменные, информацию о которых тоже надо найти где-то.
В общем я думал оно несколько проще. Одно дело собрать парочку пакетов, которые точно нужны и другое пытаться собрать все что хочешь попробовать, но чего нет и что возможно поставишь и удалишь.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18981
Статус: ✡ иностранный агент
ОС: Debian GNU/Linux

Re: Чего почитать по сборке софта?

Сообщение Bizdelnick »

UnixNoob писал:
11.11.2021 23:55
В общем я думал оно несколько проще. Одно дело собрать парочку пакетов, которые точно нужны и другое пытаться собрать все что хочешь попробовать, но чего нет и что возможно поставишь и удалишь.
Не знаю, как в слакбилдах и в void, но вообще типовые параметры сборки, как правило, есть возможность задать автоматически. При сборке deb-пакетов используют debhelper, который сам определяет сборочную систему и выполняет сборку с принятыми в дистрибутиве параметрами. При сборке rpm вместо непосредственно команд конфигурирования и сборки используются стандартные для дистрибутива макросы, которые задают стандартные опции. Что-то дописывать и переопределять приходится только в особо хитрых случаях. Но вот в этих случаях уже получается, что нужно не только со сборочной системой уметь обращаться, но и с debhelper/макросами/что там ещё напридумывали.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
RusWolf
Сообщения: 457
ОС: Arch Linux x64 на BTRFS

Re: Чего почитать по сборке софта?

Сообщение RusWolf »

Bizdelnick писал:
11.11.2021 21:58
крайне мало или вообще ничего.
Ну да, обычно скудно, но иногда прям хорошо расписанное попадается.
По крайне мере, для создания пакетов инфы хватает.
Спасибо сказали:

Kopilov
Сообщения: 839
ОС: [K]Ubuntu, Debian

Re: Чего почитать по сборке софта?

Сообщение Kopilov »

RusWolf писал:
12.11.2021 08:18
Bizdelnick писал:
11.11.2021 21:58
крайне мало или вообще ничего.
Ну да, обычно скудно, но иногда прям хорошо расписанное попадается.
По крайне мере, для создания пакетов инфы хватает.
А есть какие-то «правила хорошего тона», что именно должно быть указано?

Например, есть проект в моём авторстве, https://github.com/Kopilov/RCallerService Исторически, это проект «с работы», который мне разрешили выложить ввиду отсутствия бизнес-специфики. Уже при выкладывании я удосужился написать про запуск, но не про сборку. С другой стороны, сборка формализована в Dockerfile-ах, но их ещё надо найти.
Спасибо сказали:

Аватара пользователя
UnixNoob
Сообщения: 762
ОС: Slackware

Re: Чего почитать по сборке софта?

Сообщение UnixNoob »

А какой инструмент отвечает за создание структуры каталогов, в соответствии, к примеру, принятой в Linux? При программировании же обычно придерживаются структурой, принятой в яп, подключают библиотеки там. За все отвечает система сборки или как оно происходит?
Чтобы на выходе был архив, с определенной структурой, который можно распаковать и запустить.
Спасибо сказали:

Аватара пользователя
bormant
Сообщения: 1349

Re: Чего почитать по сборке софта?

Сообщение bormant »

UnixNoob писал:
12.11.2021 11:39
какой инструмент отвечает за создание структуры каталогов, в соответствии, к примеру, принятой в Linux?
Голова того, кто описывает фазу make install или аналогичную -- именно там и определяется, куда чего из собранного нужно положить внутри $DESTDIR или аналогичного по назначению префикса (DESTDIR -- очередное правило хорошего тона).
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18981
Статус: ✡ иностранный агент
ОС: Debian GNU/Linux

Re: Чего почитать по сборке софта?

Сообщение Bizdelnick »

UnixNoob писал:
12.11.2021 11:39
А какой инструмент отвечает за создание структуры каталогов, в соответствии, к примеру, принятой в Linux?
При установке? По-разному. Как правило, это делает сборочная система, с возможностью переопределения путей при конфигурировании. Но бывает, что автор не осилил сборочную систему, или в ней такого просто не предусмотрено, и тогда всё зависит от фантазии автора (и майнтейнеров дистрибутивов, которые наверняка будут слать ему патчи, если он сильно накосячил).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
RusWolf
Сообщения: 457
ОС: Arch Linux x64 на BTRFS

Re: Чего почитать по сборке софта?

Сообщение RusWolf »

Kopilov писал:
12.11.2021 11:29
А есть какие-то «правила хорошего тона», что именно должно быть указано?
Я не пишу программ, поэтому, тут мне нечего сказать.
Но таким, как я облегчит путь, до сборки пакета, описание как собрать проект, какие есть опции сборки.
Спасибо сказали:

Аватара пользователя
UnixNoob
Сообщения: 762
ОС: Slackware

Re: Чего почитать по сборке софта?

Сообщение UnixNoob »

bormant, а как сборка устроена у Alien’а, к примеру? Пишется slackbuild, а затем автоматически перезапускается? Для обновления версий, патчей. А изначально он это пишет все руками. Как это хотя бы выглядит по-вашему мнению? Мне интересно понять какой кусок работы автоматизирован, а какой - нет. Как пишется одиночный slackbuild понятно, но как он масштабируется, если держать репозиторий. Раньше был src2pkg, но сейчас я так понял он не актуален.
Спасибо сказали:

Аватара пользователя
bormant
Сообщения: 1349

Re: Чего почитать по сборке софта?

Сообщение bormant »

UnixNoob, ну как-как, примерно правильно описано ;)
Есть разработчик софта, он обычно предусматривает какие-то способы управления сборкой (например, для autotools что-то вроде configure с его --with-нечто, --without-нечто, --enable-нечто, --disable-нечто и т.п.) и раскладкой файлов внутри префикса (например, для autotools что-то вроде --prefix сотоварищи), обычно в README описывает что с этим набором исходников делать.

Соответственно, SlackBuild реализует вот те действия, предусмотренные автором софта по 1) распаковке тарбола, 2) наложению патчей, если нужно, 3) сборке бинарников, 4) установке во временный каталог, 5) докинуть сам SlackBuild и чего еще посчитали нужным, 6) собрали в пакет дерево временного каталога из (4).

Выйдет новая версия, читаем README и доступные источники, что там нового. Если система сборки осталась прежней, то смотрим на новые/устаревшие возможности, нужно ли чего добавить в параметры сборки или убрать из них. Часто этого не требуется, достаточно смены номера версии.

Поправили, собрали, протестировали, сделали замену в репо, обновили метаинформацию репозитория (скрипт есть). По необходимости повторить.
Спасибо сказали:

Аватара пользователя
Zer0
Сообщения: 253
ОС: Void, Slackware

Re: Чего почитать по сборке софта?

Сообщение Zer0 »

UnixNoob, возможно Вы до этого уже добрались, но на всякий случай: The XBPS source packages manual.
А насчёт:
собрать все что хочешь попробовать
Возможно быстрее будет установить дистрибутив с интересующим ПО в виртуальную машину, и если обнаружится нужный софт, которого нет в вашей ОС - тогда уже и разбираться с его сборкой. А может он и на флэтхабе найдётся.
Memento mori ... сделай бэкап.
Спасибо сказали:

Аватара пользователя
UnixNoob
Сообщения: 762
ОС: Slackware

Re: Чего почитать по сборке софта?

Сообщение UnixNoob »

Zer0, да добрался. Но для меня это не кажется простым. Особенно когда открываешь какой-нибудь Ungoogled Chromium и его template для сборки с исходников (который не рабочий правда). Читая слакбилды все казалось обманчиво простым, много повторяющихся частей, которые касаются перемещения и выдачи прав, и я подумал, что смогу собирать все, что захочу "на посмотреть", т.к оно достаточно шаблонно. Или хотя бы думал что есть исчерпывающее руководство по сборке софта . А оказалось что мне тогда придется знать инструменты сборки всех ЯП, с которыми я столкнусь, и много читать readme.
Понятно что если задаться целью и в целом что-то делать в этом направлении, то это задача выполнима, но конкретно сейчас, я не могу потратить на это столько времени.
У SuSe правда, к примеру, был какой-то инструмент для создания пакетов,OBS, кажется. Но yast мне не зашел, мне больше нравится консоль, а не куча gui-окошечек с настройками.
В любом случае всем отписавшимся спасибо. Я понял направление куда мне копать, если я захочу пытаться что-то собирать самостоятельно.
Спасибо сказали:

Аватара пользователя
Zer0
Сообщения: 253
ОС: Void, Slackware

Re: Чего почитать по сборке софта?

Сообщение Zer0 »

Мануал redhat для RPM.
Я предполагаю, что для сборки и тестирования софта, на первое время хватит изучения систем сборки пакетов DEB и RPM - они покрывают два крупнейших семейства дистрибутивов linux.
Memento mori ... сделай бэкап.
Спасибо сказали:

Аватара пользователя
UnixNoob
Сообщения: 762
ОС: Slackware

Re: Чего почитать по сборке софта?

Сообщение UnixNoob »

Zer0 писал(а):
16.11.2021 15:37
хватит изучения систем сборки пакетов DEB и RPM
Я подумывал узнать о создании ebuild. Это мне кажется ближе к системам сборки и базовым знаниям. Но все руководства сводятся не к узнаванию доступных флагов сборки, необходимых зависимостей, переменных окружения, а к созданию нужной структуры каталогов, необходимых для создания пакета и создание файлов, описывающих пакет, но с этой информацией проблем нет. А т.к мои вопросы нигде не описаны, значит информация считается очевидной. Или, как вариант, я мысленно усложняю сборку, хотя это в действительности просто. :)
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 18981
Статус: ✡ иностранный агент
ОС: Debian GNU/Linux

Re: Чего почитать по сборке софта?

Сообщение Bizdelnick »

UnixNoob писал:
16.11.2021 15:26
У SuSe правда, к примеру, был какой-то инструмент для создания пакетов,OBS, кажется.
Это не совсем то. Это сервис для сборки rpm-пакетов (и deb тоже, хотя этим реже пользуются), который не отменяет необходимости самостоятельно писать спеки. Он просто может собрать пакет сразу под кучу дистрибутивов.
UnixNoob писал:
16.11.2021 15:26
Но yast мне не зашел, мне больше нравится консоль, а не куча gui-окошечек с настройками.
Наличие yast, в принципе, не запрещает пользоваться консольными инструментами.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: