Сборка своего пакета Thinstation 5 и 6
Самому писать много букав желания нет, поэтому в статье местами использованы вставки из CRUX Handbook, кстати хоть перевод и старый, но в принципе ничего не изменилось, рекомендую к прочтению, и информация с форума разработчиков Thinstation.
Для начала идём на http://crux.nu/portdb/?a=search и пытаемся найти нужный нам пакет.
Если повезло, то копируем команду загрузки (если команда начинается с httpup, вроде CRUX-овская фича, то закачивать в chroot-среде) и идём в папку ts/ports/static-source, в терминале выполняем команду и получаем папку с файлами для сборки.
Если не повезло и пакет не нашёлся, то делаем свой файл сборки Pkgfile, содержащий информацию о пакете (такую как имя, версия и т.п.) и команды, которые должны быть исполнены для сборки пакета. Ниже пример Pkgfile-а, как он должен выглядеть, для сборки утилиты grep. Добавлены некоторые комментарии.
В реальном случае, не нужно вставлять все эти комментарии. Ниже приведен реальный для grep
Я настоятельно рекомендую посмотреть, как сделаны Pkgfile-ы в других пакетах. Это хороший способ научиться создавать свои.
Сборка запускается в croot-среде, в папке с Pkgfile, командой pkgmk -d. После того, как pkgmk завершит работу будет собран пакет с именем <name>#<version>-<release>.pkg.tar.gz. Перед тем, как сборка пакета завершится, pkgmk сверит содержимое пакета с файлом .footprint. Если этого файла нет, то он будет создан и тест пропущен. Файл .footprint содержит список всех файлов в пакете. Если произойдет несовпадение сверки, пакет собран не будет и будет выдано сообщение об ошибке. Вы не должны создавать .footprint вручную. Вместо этого, после того, как пакет обновлен, вам нужно обновить содержимое .footprint файла командой pkgmk -uf.
Если пакет собрался без ошибок, то устанавливаем его с помощью pkgmk -i.
Информация выше взята из CRUX Handbook с моими дополнениями, а вот теперь мой опыт по сборке пакета Midnight Commander:
./setup-chroot #входим в среду сборки
cd ts/ports/static-source #переход в папку
rsync -aqz crux.nu::ports/crux-3.0/opt/mc/ mc #скачиваем "сборочные" файлы
cd mc #переход в папку пакета
pkgmk -d #эта команда загрузит исходники и скомпилирует пакет
pkgmk -i #эта команда установит пакет в chroot-окружение
После попытки запуска mc в chroot-окружении вылезла ошибка:
bash: /usr/share/mc/mc-wrapper.sh: No such file or directory
Не беда, находим этот файл в папке /usr/lib/mc и переносим его с остальными в /usr/share/mc.
Теперь всё работает.
На этом компиляция закончена, нужно получить файлы в образ:
mkdir -p /ts/5.1/packages/mc/build #cоздаём папки будущего пакета
cp /ts/5.1/packages/cups/build/install /ts/5.1/packages/mc/build/ #копируем скрипт установки, что бы свой не писать
Меняем в файле /ts/5.1/packages/mc/build/install строку export PACKAGE=cups на export PACKAGE=mc
и убираем export CREATE_EMPTY_DIRS="
var/cache/cups
etc/cups/ssl
etc/cups/ppd
etc/cups/interfaces
"
Добавляем в папку пакета файл dependencies, вписав в него слово base.
Далее добавляем package mc в build.conf.example и запускаем сборку.
После сборки получаем готовый пакет Midnight Commander.
Update:
В 6 версии thinstation начали использовать systemd, для использования пакетов от 5 версии нужно создать systemd юнит, для примера смотреть сюда.
И вот ещё официальный мануал по обновлению.