# Подкаст Linux без Интернета * Хеш-тег: [#offlinux](https://mastodon.ml/tags/offlinux) * аудио записано: 28 декабря 2023 года Каждый человек сталкивается с проблемой спорадически возникающего вокруг него хаоса по мере продвижения вперёд к цели и развития. Хотя и считается, что хаос - это такой неосознанный порядок. Но порядок в одной культуре считается нелепицей в другой. Что можно абсолютно точно сказать, что одним из методом привезти окружающее пространство во что-то более или менее понимаемое и упорядоченное - это разбиение материалов, с какими мы имеем дело, на какие-то, прежде всего понятные нам категории: классы, иерархии и т.д. То, что нам приходит в виде схем структуризации из-вне не всегда является желательным. Поэтому требуется самостоятельно не только разобраться в своих данных но и получить навык сборки программной сисетмы "под себя".   ## Выпуск №18. Начала разработок (часть 2) В прошлом выпуске был начат разговор о том, как можно своими силами попробовать собрать себе собственный дистрибутив Linux. Несмотря на то, что упомянутый Linux From Scratch (LFS) в своей базовой части минимально прост, но основной его недостаток всплывает на поверхность, когда оказывается, допустим, что в собранном и установленном программном продукте есть недостатки: * ошибка уязвимости (дыра в безопасности) * недостаток в функционировании (bug) Это требует обновления программ, особенно, если есть вариант вдруг с ними срочно выйти в большую Сеть. Тогда мы приходим к выводу, что требуется программные продукты дробить на части, которые упаковывать в т.н. пакеты. Впоследствии уже при удалении, добавлении, обновлении и прочим операциям с программным обеспечением (ПО), мы будем иметь дело не с категориями отдельных файлов, а наборов файлов, но не только их: в нашем распоряжении будут автоматизированные действия над с файлами и всей системой. Это т.н. программы-скрипты-триггеры, которые автоматически срабатывают перед/после установки/обновлений пакетов. Фактически пред- пост- инсталляционные скрипты - это рецепты по правильной интеграции пакетов в операционную систему. В редких сручаях это автматизация с интерактивным опросом у администратора параметров дальнейшего функционирования пакетов и/или системы в целом. Например, имя машины, режим работы, язык локализации, временная зона, слушаемый порт TCP и множество других... Одним из первых простых, но до сих пор живущих дистрибутивов, в этом плане, всё ещё остаётся дистрибутив [SlackWare](http://www.slackware.com). На первый взгляд может показаться, что это тот же самый LFS, за исключением того, что каждая программа со всеми её свежеустановленными материалами по какому-то списку или правилу пакутеся в tarball архив. Но это не так: как раз там, внутри пакетов есть те самые скрипты на оболочке [Bash](https://ru.wikipedia.org/wiki/Bash). Культура выпуска дистрибутива не менялась долгое время: [Патрик Фолькердинг](https://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D0%BB%D1%8C%D0%BA%D0%B5%D1%80%D0%B4%D0%B8%D0%BD%D0%B3,_%D0%9F%D0%B0%D1%82%D1%80%D0%B8%D0%BA) единолично выпускал образ из пакетов и простейшего инсталлятора на базе текстового интерфейса curses. Потом этот дистрибутив в иде двоичного образа выкладывался на FTP серверах. Где то там лежали и исходные пакеты/тарболлы. С некоторого времени операционка перешла на [SlackBuild](https://mirrors.slackware.com/slackware/slackware/source/README.TXT). Теперь обычный пользователь при наличии квалификационных навыков может вмешаться в процесс формирования своей ОС. Самое частое, что делают - меняют флаги сборки/кофигурирования под особенности архитектуры своего процессора или собирают какие-то интегративные дополнительные функции "под себя". Что же из себя представляет эта технология SlackBuild? Она сохраняет принцип простоты и прямой управляемости который не теряется со времён первых дистрибутивов 90-х годов прошлого века SlackWare. Каждый пакет разложен по отдельному каталогу по группам. В каталоге находится: * собственно сам тарболл архив с исходными текстами и метафайлами для сборок в системах: - make - automake - cmake - ... * Если tarball файл не приложен, то может быть файл с метаинформацией `пакет.info`, в котором есть ссылка на адрес в Сети откуда этот архив можно загрузить. * возможен, но не обязательно, т.н. файл исправлений (патч) который применяется сразу же после разархивации тарболла (см. пред. пункт). * файл описаний slack-desc. Он содержит заголовок, назначение, функциональные возможности и адрес сайта пакета программы (библиотеки) * Файл с именем пакета и, собственно расширением (суффиксом) `.SlackBuild`. Это ни что иное как скрипт на языке оболочки Bash. Внутри скрипта есть типовые переменные, управляющие параметрами сборки (возможно и компиляции), упаковки конечного двоичного пакета или архитектурно независимиго, который встанет в целевой экземпляр ОС на вашем компьютере. * Также может быть приложен файл README, содержащий самое общее описание пакета применимо к ОС SlackWare. Технология сборки сводится простому запуску этого скрипта `Пакет.SlackBuild` . Скрипт определяет текущее окружение распаковывая архив основого пакета, применяя к нему приложенный в тот же каталог патч-файл. И дальше проходит собственно, основываясь на внутренних и внешних переменных системы сборки Slackware двоичный пакет. Известно, что есть базовая часть и часть [extra](https://mirrors.slackware.com/slackware/slackware64-current/extra/) в состав которой входят такие полезные пакеты, как : * [Java](https://mirrors.slackware.com/slackware/slackware64-current/extra/source/java/) * [FLTK](https://mirrors.slackware.com/slackware/slackware64-current/extra/source/fltk/) * [bash-completion](https://mirrors.slackware.com/slackware/slackware64-current/extra/source/bash-completion/) Однако, требования по софту могут быть такие, что наличие пакета не оказаться. Тогда проще всего посмотреть ресурс [SlackBuilds.org](https://ru.wikipedia.org/wiki/SlackBuilds.org). Там другие волонтёры дособирают тот софт, которого не хватает. ## Фоновая музыка * [We Drift Like Worried Fire ; Pt. 2](https://archive.org/details/gybe2003-05-14.flacf/2003-05-14+L'Olympic%2C+Nantes%2C+France/gybe2003-05-14d2t01.flac) гр. [Godspeed You Black Emperor!](https://archive.org/details/GodspeedYouBlackEmperor)