slackware
Slackware - это (ака Slackware Way)
дистрибутив, который может быть целиком установлен без доступа к сети с CD/DVD дисков.
дистрибутив, который выпускается только тогда, когда стабилен, и не имеет фиксированного графика выхода. Каждый выпуск Slackware Linux тщательно тестируется командой Slackware и сообществом. Slackware высоко ценит стабильность, предпочитая её «новизне» или «свежести» программного обеспечения.
дистрибутив, в котором «простота» предпочтительнее «удобства». Например, отсутствуют графические помощники (обычные во многих других коммерческих дистрибутивах) для задач администрирования системы.
дистрибутив, в котором настройка и администрирование системы выполняются простыми консольными (ncurses) сценариями или непосредственным редактированием хорошо документированных конфигурационных файлов в текстовом редакторе.
дистрибутив, который предпочитает опакечивать «ванильное», то есть немодифицированное, программное обеспечение. В результате отсутствия или малого количества собственных изменений («заплаток») программное обеспечение в Slackware работает настолько близко к тому, как было задумано его создателями, насколько это возможно.
дистрибутив, который не добавляет слоёв абстракции или усложнения поверх существующих решений. Например, управление пакетами Slackware осуществляется простыми сценариями, работающими с файлами пакетов - сжатыми архивами (*.tgz, *.txz, *.tbz), управление пакетами не имеет средств обработки зависимостей.
дистрибутив, который верен здравому смыслу изречения «не чини то, что не сломалось».
дистрибутив, в котором основные решения принимает BDFL (Benevolent Dictator For Life - великодушный пожизненный диктатор, нынешний главный мэйнтейнер Патрик Фолькердинг и где процесс разработки более закрытый, чем в дистрибутивах, развиваемых исключительно сообществами. Как результат, дистрибутив сосредоточен на собственных сильных сторонах и достоинствах, а не на удовлетворении произвольных предпочтений сообщества или кого-либо ещё. По этой причине стремление к популярности и удовлетворению потребностей массового рынка оказывает меньшее влияние на команду разработчиков Slackware.
История
Во времена первых дистрибутивов, сущевствовал тн SLS, удобный тем, что собирать из исходников там требовалось1) только ядро, все ПО поставлялось уже в бинарном виде, а сжатых tar-болах. Инициализация происходила через скрипты командной оболочки, а в качестве загрузкичка использовался LILO. Пакетного менеджера небыло2). SLS был популярен, но его плохо поддерживали. Студент, использовывший SLS для учебы, задолбавшись при каждом запуске системы чинить ее косяки, создал свою сборку и стал распространять ее анонимно через FTP server. Эта сборка и стала Slackware.
Пакеты
В качестве пакетов тут используются tarballs. Управление пакетами производится так:
# Менеджер пакетов (интерактивные операции с установленными пакетами)
pkgtool
# Запустить текстовый интерфейс для просмотра, настройки и удаления уже установленных пакетов
# Установить пакет из tarball
installpkg <path_to_tar>
# --root задает директорию для установки
# --dry-run вывести предпологаемые действия и не выполнять их
# --backup создать резервные копии перезаписываемых файлов
# Выполнить инструкции для удаления
removepkg <path_to_tar>
# --preserve-конфиги не удалять конфигурационные файлы из /etc
# --dry-run вывести предпологаемые действия и не выполнять их
# Распаковать содержимое пакета без установки (полезно для просмотра)
explodepkg <path_to_tar>
# --dest <dir> указать каталог для распаковки
# --list только показать список файлов внутри архива
# Создать tarball-пакет из каталога с исходниками/файлами
makepkg <output_tar> <source_dir>
# --compress <gzip|bzip2|xz> задать формат сжатия
# --manifest <file> включить/обновить манифест пакета
# Установить новый пакет и удалить остатки старого (обновление/откат)
upgradepkg <path_to_tar>
# --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.
Перед написанием слакбилда стоит провести установку ПО вручную. Это преупредит появление непредсказуемого поведения и всяких багов
Гайд по написанию слакбилдов
Свои слакбилды можно и нужно размещать публично (например, тут), что бы быть полезным членом сообщевства.
Иногда можно встретить предсобранные пакеты, их достаточно установить (installpkg). Обычно они с суффиксом .tgz или .txz.
Управление пакетами
slackpkg
Для упращения3)
жизни есть slackpkg. Зеркало выбирается в /etc/slackpkg/mirrors, выбрать можно только одно.
usage:
# Обновить базу пакетов (информацию о пакетах на сервере)
slackpkg update
# Поиск пакета
slackpkg search foo
# Скачивание и установка пакета
slackpkg install foo
PS инструкция по установке этого чуда
rpm2tgz
Варианты устанвоки ПО, распространяеого в RPM пакетах:
Собрать собственный пакет Slackware
Скомпилировать и установить прямо из исходного кода
Сконвертировать установку из RPM через rpm2tgz
usage:
# Сконвертировать RPM в tgz
rpm2tgz foo-x.x.xx.rpm
# Установить полученный tgz
slackpkg install foo
Материалы