~~NOCACHE~~
====== slackware ======
++++Slackware - это (ака Slackware Way)|
* дистрибутив, который может быть **целиком** установлен без доступа к сети с CD/DVD дисков.
* дистрибутив, который выпускается только тогда, когда **стабилен**, и не имеет фиксированного графика выхода. Каждый выпуск Slackware Linux тщательно тестируется командой Slackware и сообществом. Slackware высоко ценит стабильность, предпочитая её "новизне" или "свежести" программного обеспечения.
* дистрибутив, в котором "простота" **предпочтительнее** "удобства". Например, отсутствуют графические помощники (обычные во многих других коммерческих дистрибутивах) для задач администрирования системы.
* дистрибутив, в котором настройка и администрирование системы выполняются **простыми** консольными (ncurses) сценариями или непосредственным редактированием хорошо документированных конфигурационных файлов в текстовом редакторе.
* дистрибутив, который предпочитает опакечивать "ванильное", то есть немодифицированное, программное обеспечение. В результате отсутствия или малого количества собственных изменений ("заплаток") программное обеспечение в Slackware работает настолько близко к тому, **как было задумано** его создателями, насколько это возможно.
* дистрибутив, который **не добавляет слоёв абстракции** или усложнения поверх существующих решений. Например, управление пакетами Slackware осуществляется простыми сценариями, работающими с файлами пакетов - сжатыми архивами (*.tgz, *.txz, *.tbz), управление пакетами не имеет средств обработки зависимостей.
* дистрибутив, который верен **здравому смыслу** изречения "не чини то, что не сломалось".
* дистрибутив, в котором основные решения принимает BDFL (**B**enevolent **D**ictator **F**or **L**ife - //великодушный пожизненный диктатор//, нынешний главный мэйнтейнер **Патрик Фолькердинг** и где процесс разработки более закрытый, чем в дистрибутивах, развиваемых исключительно сообществами. Как результат, дистрибутив **сосредоточен на собственных сильных сторонах** и достоинствах, а не на удовлетворении произвольных предпочтений сообщества или кого-либо ещё. По этой причине стремление к популярности и удовлетворению потребностей массового рынка оказывает меньшее влияние на команду разработчиков Slackware.
++++
===== История =====
Во времена первых дистрибутивов, сущевствовал тн //SLS//, удобный тем, что собирать из исходников там требовалось((в те времена ядро Linux не имело поддержки загружаемых моделуй и драйверы приходилось жестко включать в ядро и компелировать в него. При изменении оборудования приходилось перекомпилировать ядро.)) только ядро, все ПО поставлялось уже в бинарном виде, а сжатых tar-болах. Инициализация происходила через скрипты командной оболочки, а в качестве загрузкичка использовался LILO. Пакетного менеджера небыло((вернее были программы для утановки и удаления ПО, но без разрешения зависимостей)). SLS был популярен, но его плохо поддерживали. Студент, использовывший SLS для учебы, задолбавшись при каждом запуске системы чинить ее косяки, создал свою сборку и стал распространять ее анонимно через FTP server. Эта сборка и стала Slackware.
===== Пакеты =====
В качестве пакетов тут используются tarballs. Управление пакетами производится так:
# Менеджер пакетов (интерактивные операции с установленными пакетами)
pkgtool
# Запустить текстовый интерфейс для просмотра, настройки и удаления уже установленных пакетов
# Установить пакет из tarball
installpkg
# --root задает директорию для установки
# --dry-run вывести предпологаемые действия и не выполнять их
# --backup создать резервные копии перезаписываемых файлов
# Выполнить инструкции для удаления
removepkg
# --preserve-конфиги не удалять конфигурационные файлы из /etc
# --dry-run вывести предпологаемые действия и не выполнять их
# Распаковать содержимое пакета без установки (полезно для просмотра)
explodepkg
# --dest указать каталог для распаковки
# --list только показать список файлов внутри архива
# Создать tarball-пакет из каталога с исходниками/файлами
makepkg
# --compress задать формат сжатия
# --manifest включить/обновить манифест пакета
# Установить новый пакет и удалить остатки старого (обновление/откат)
upgradepkg
# --root задает директорию для установки
# --backup сохранить перезаписываемые файлы перед заменой
# --dry-run вывести предпологаемые действия и не выполнять их
Для удобства есть ncurses TUI на все это: ''pkgtool''
Так как пакетного мереджера тут нет, ставить ПО и разрешать зависимости нужно руками.
==== SlackBuild ====
SlackBuild - это сценарий оболочки (обычно совместимый с bash), который автоматизирует процесс конфигурирования, компиляции и создания пакета Slackware (файлы *.tgz, *.txz, *.tbz) из исходных кодов.
++++Обобщенное описание процесса|
- Распаковка архива с исходными кодами в "рабочий каталог".
- Создание файла //slack-desc// правильного формата с описанием ПО.
- Конфигурирование исходного кода и, если надо, применение patch'ей.
- Сборка исходных кодов и генерация бинарных файлов.
- Установка программы во временный каталог, тоесть редактирование //Makefile// и запуск ``make install`` (или другой системой сборки).
- Копирование документации программы и прочих необходимых файлов (включая послеустановочные сценарии) в соответствующие подкаталоги временного каталога установки. Их расположение должно соответствовать принятой в //Slackware// структуре каталогов, устанавливаемых пакетным менеджером, а именно: находиться в префиксе (иерархии) ''/usr''.
- Использование ''makepkg'' во временном каталоге для создания пакета //Slackware//, который затем может быть установлен c помощm. ''installpkg''.
++++
Перед написанием слакбилда стоит провести установку ПО вручную. Это преупредит появление непредсказуемого поведения и всяких багов
[[playground:guides:writing_a_slackbuild|Гайд по написанию слакбилдов]]
Свои слакбилды можно и нужно размещать публично (например, [[http://www.slackbuilds.org|тут]]), что бы быть полезным членом сообщевства.
Иногда можно встретить предсобранные пакеты, их достаточно установить (installpkg). Обычно они с суффиксом ''.tgz'' или ''.txz''.
===== Управление пакетами =====
==== slackpkg ====
Для упращения((
Без slackpkg процесс мог быть таким:
* Обнаружить в журнале изменений Slackware выпуск обновления.
* Посмотреть на используемом зеркале Slackware ссылку для загрузки пакета.
* Загрузить пакет с зеркала Slackware на жёсткий диск.
* Применить ''installpkg'' или ''pkgtool'' для установки загруженного пакета.
При помощи slackpkg он сокращается до:
* Обнаружить в журнале изменений Slackware выпуск обновления для "foo".
* ''slackpkg install foo''
))
жизни есть ''slackpkg''. Зеркало выбирается в ''/etc/slackpkg/mirrors'', выбрать можно __только одно__.
usage:
# Обновить базу пакетов (информацию о пакетах на сервере)
slackpkg update
# Поиск пакета
slackpkg search foo
# Скачивание и установка пакета
slackpkg install foo
PS [[https://dslackw.gitlab.io/slpkg/install/|инструкция по установке этого чуда]]
==== rpm2tgz ====
Варианты устанвоки ПО, распространяеого в RPM пакетах:
* Собрать собственный пакет Slackware
* Скомпилировать и установить прямо из исходного кода
* Сконвертировать установку из RPM через ''rpm2tgz''
usage:
# Сконвертировать RPM в tgz
rpm2tgz foo-x.x.xx.rpm
# Установить полученный tgz
slackpkg install foo
===== Материалы =====
* [[http://www.slackware.com|сайт проекта]]
* [[https://docs.slackware.com/|slackdocs]]
* [[https://www.slackbook.org/|slackbook]]
* [[https://slackbuilds.org/|slackbuilds]]
* [[https://git.slackware.nl/|Alien BOB's repo]]
* [[https://wiki.alienbase.nl/|alienbase]]