~~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]]