Продолжая разбираться, как устроен Slackware, я добрался до KDE. Идея была в том, чтобы разделить пакеты kde5 на основные и дополнительные. И тут ждало меня удивление, оказывается все уже сделано, нужно только чуть-чуть подправить скрипт сборки. Давайте смотреть.
Для начала надо получить сами исходники. Сделать это можно следующим образом:
#/bin/bash
mkdir -p ./slackware64-current/source/kde/
rsync -av rsync://mirror.yandex.ru/slackware/slackware64-current/source/kde/ ./slackware64-current/source/kde/
Выполнить rsync нужно в папке, где лежит подготовленный к сборке дистрибутив Slackware. Подробнее смотри здесь: Создание собственного ISO образа Slackware.
Зайдя в папку kde мы не увидим привычных SlackBuild для каждого пакета, а будет один общий скрипт kde.SlackBuild. Который универсально по списку покетов (моделей) собирает пакеты с kde. Давайте разберем принцип работы скрипта. Если заглянуть внутрь, мы увидим список модулей (модули это группы пакетов).
KDEMODS=" \
kde4 \
frameworks \
applications-extra:kdiagram \
kdepim \
plasma-extra:plasma-wayland-protocols \
plasma \
plasma-extra \
applications:libktorrent \
applications \
applications-extra \
applications:umbrello \
"
Можно выделить следующие модули:
- frameworks — это пакеты самого фраймворка KDE. Базовые библиотеки.
- plasma — содержит пакеты необходимые для работы plasma5. Тут нет ещё программ.
- applications — содержит весь набор программ для kde.
- -extra — это дополнительный набор программ.
- и остальные это конкретнее пакеты. Да можно указать не только группу ну и конкретный пакет.
Для каждого такого модуля существует файл со списком пакетов в папке modules:
Вполне не плохо сделано, судя по всему этот скрипт остался ещё от репозитория ktown, который поддерживал Эрик.
Ну а далее все просто, скрипт обходит модули, получает имя программы и собирает. Единственное все пакеты в конце сваливаются в одну кучу, что мне было не нужно. По этому я немного подкорректировал скрипт kde.SlackBuild.
Во-первых скорректировал список модулей, убран не нужные мне пакеты.
#+archer
KDEMODS=" \
kde4 \
frameworks \
plasma \
plasma-extra \
applications:libktorrent \
applications \
applications-extra \
"
Тут стоит заметить, что это совсем не обязательно, скрипт можно выполнять с аргументами указав те модули, которые нужно скомпилировать:
./kde.SlackBuild frameworks, plasma
И ещё, чуть ниже закомментировал 2 сорочки кода, в которых было перемещение и удаление собранных пакетов.
deterministic_build $module
if [ $? = 0 ]; then
# Move the created packages up into the KDE build directory:
#mv ${SLACK_KDE_BUILD_DIR}/$(echo $module |cut -f1 -d:)/*.t?z ${SLACK_KDE_BUILD_DIR}/ 2> /dev/null#-archer
if [ "$CLEANUP" = "yes" -o "$CLEANUP" = "YES" ]; then
# Clean out package and build directories:
#rm -rf ${SLACK_KDE_BUILD_DIR}/$(echo $module |cut -f1 -d:)#-archer
echo "skip build"
fi
В итоге я получил сборку пакетов в папки с названиями модулей в /tmp/kde_build:
Собственно это и было моей целью. Далее нужно проверить, что дает установка пакетов.
Если установить пакеты из папки frameworks и plasma — то мы получаем полноценно работающий kde-plasma5 без каких либо программ. Конечно некоторый набор программ все равно присутствует, но уже почти чистая установка. При это все работает.
Далее если установить пакеты из папки applications мы получим весь набор программ из проекта KDE.
Собственно теперь, чтобы получить образ с нужным набором программ достаточно просто подчистить список applications оставив нужные пакеты.
Мне это нужно для сборки дистрибутива с cutefish. Очень не нравится вот такой вид лаунчара при полной установки kde:
выкладывать не планируешь пакеты?n`me
Нет, это больше для того, чтобы разобраться, как строится дистрибутив.