[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Сценарии SlackBuild

Сценарий SlackBuild (слакбилд) – это сценарий оболочки (обычно совместимый с bash), который автоматизирует процесс конфигурирования, компиляции и создания пакета Slackware (файлы *.tgz, *.txz, *.tbz) из архивов исходных кодов.

Обзор

Основы процесса создания пакета Slackware из исходных кодов можно обобщить следующим образом, при этом детали могут различаться в зависимости от системы сборки.

  1. Распаковка архива исходных кодов (обычно файла .tar.gz или .tar.bz2) в «рабочий каталог».
  2. Создание файла slack-desc правильного формата с описанием программного обеспечения.
  3. Конфигурирование исходного кода и, если необходимо, применение заплат (patch).
  4. Компиляция/сборка исходных кодов и генерация бинарных файлов.
  5. Установка программы во временный каталог. Этот шаг может быть немного мудрёным в зависимости от того, как работает make install (или сходная функциональность) системы сборки. В стандартных Makefile-ах GNU должно быть достаточно передать переменную DESTDIR команде make install. В нестандартных Makefile-ах и системах сборки, не поддерживающих эту опцию, может потребоваться применение заплат к файлу Makefile (или аналогичному) или редактирование настроек конфигурации сборки системы сборки.
  6. Копирование документации программы и прочих необходимых файлов (включая послеустановочные сценарии) в соответствующие подкаталоги временного каталога установки. Их расположение должно соответствовать принятой в Slackware структуре каталогов для хранения приложений, устанавливаемых пакетным менеджером, а именно: находиться внутри каталога /usr.
  7. Использование утилиты makepkg во временном каталоге (где была размещена установка) для создания пакета Slackware, который затем может быть установлен при помощи утилиты installpkg.

Хотя вышеприведённые шаги могут быть выполнены вручную, процесс этот утомителен, местами сложен, требует набирать множество команд. Его автоматизация при помощи сценария оболочки позволяет пользователю поделиться им со всем сообществом. Также, имеющиеся сценарии SlackBuild целесообразно модифицировать и использовать для обновления программы до новой версии.

Создание слакбилдов

Хороший практический учебник по созданию слакбилдов расположен здесь, получить представление о том, что именно требуется от сценария, можно из шаблонов.

Однако, программное обеспечение может быть написано на различных языках программирования (и даже на интерпретируемом языке программирования) и не иметь очевидного способа «установки». В подобных случаях многие шаги в написании слакбилда будут отличаться от обычных. Поэтому слепое копирование команд из других сценариев может как сработать, так и нет.

Каждому, кто собирается написать слакбилд, рекомендуется предварительно изучить и понять систему сборки проекта программного обеспечения. Несомненной пользой будет приобретение опыта в написании сценариев оболочки, поскольку для написания слакбилдов рекомендовано использовать сценарии оболочки Борна (bash). Чтобы начать практиковаться в написании слакбилдов, хорошо подойдут простые проекты на языке C, использующие стандартную систему GNU Make.

Для начинающих хорошей идеей будет перед написанием слакбилда выполнить вручную приведённые выше шаги по созданию пакета из исходного кода. Это сократит вероятность ошибок и непредвиденного поведения сценария.

Размещение слакбилдов в публичном репозитории, таком как http://www.slackbuilds.org, может дополнительно потребовать соблюдения определённых соглашений и стандартов кодирования. Например, выполнение требования о том, чтобы целевая архитектура определялась сценарием во время его выполнения, а не была жёстко указана в тексте. Подобные стандарты пытаются сделать слакбилды максимально переносимыми.

Автоматические генераторы слакбилдов

Существует несколько инструментов, способных помочь в создании слакбилдов. Среди них:

Внешние ссылки

Источники

 ru:slackware:slackbuild_scripts ()
Перевод этой страницы?: