Construir o seu SliTaz

Todo pacote e toda imagem do SliTaz é construído a partir de receitas simples em shell, com ferramentas instaladas no próprio SliTaz. Este capítulo dá os primeiros passos; os manuais das ferramentas têm os detalhes, e as páginas de desenvolvimento do site explicam como o projeto funciona: o wok, o servidor de build, o Mercurial e como contribuir.

Pacotes com o cookutils

O Cookutils constrói pacotes a partir de receitas mantidas no wok, /home/slitaz/wok. Ele está no SliTaz Core e no Firefox x86_64; nos demais, instale-o:

# spk-add cookutils
# grep ^ARCH /etc/slitaz/cook.conf    # deve corresponder ao seu sistema
# cook setup                 # diretórios e ferramentas de build
# cook setup --wok           # também clona o wok oficial (precisa do mercurial)
# cook new mypkg             # nova receita em /home/slitaz/wok/mypkg/
# nano /home/slitaz/wok/mypkg/receipt
# cook mypkg
# spk-add /home/slitaz/packages/mypkg-1.0-x86_64.tazpkg

No x86_64, verifique se ARCH="x86_64" está definido em /etc/slitaz/cook.conf: o pacote 5.1 traz i486 ali. O log de build é /home/slitaz/log/mypkg.log. O cook doctor verifica o ambiente de build e o cook-tui é uma interface em modo texto. As configurações estão em /etc/slitaz/cook.conf. Em um sistema em execução, o cook trabalha em uma camada descartável sobre o sistema: as dependências de build instaladas para o cook desaparecem quando ele termina, e nada é instalado no sistema até que você o faça.

A receita

Uma receita é um arquivo shell com algumas variáveis e funções:

# SliTaz package receipt.

PACKAGE="hello"
VERSION="2.12"
CATEGORY="misc"
SHORT_DESC="The GNU Hello program."
MAINTAINER="you@example.org"
LICENSE="GPL3"
WEB_SITE="https://www.gnu.org/software/hello/"
TARBALL="$PACKAGE-$VERSION.tar.gz"
WGET_URL="https://ftp.gnu.org/gnu/$PACKAGE/$TARBALL"

DEPENDS=""
BUILD_DEPENDS=""

compile_rules()
{
	./configure --prefix=/usr &&
	make && make DESTDIR=$DESTDIR install
}

genpkg_rules()
{
	mkdir -p $fs/usr
	cp -a $install/usr/bin $fs/usr
}

O compile_rules compila e instala em $install, e o genpkg_rules copia para $fs o que pertence ao pacote. O manual do Cookutils descreve todas as variáveis, o formato de receita v2 com pacotes divididos, e o cooker, o robô de build.

Construir em um chroot

Para construir em um sistema limpo, que não dependa do que está instalado no seu, use um chroot. O tazdev cria um e entra nele:

# spk-add slitaz-dev-tools
# tazdev gen-chroot --arch=x86_64 \
	--mirror=https://mirror.slitaz.org/x86_64/cooking/packages/
# tazdev chroot --arch=x86_64

Sair do shell do chroot o desmonta. Para i486, use --arch=i486 e o mirror i486. Para construir pacotes SliTaz a partir de outra distribuição GNU/Linux, use o tazlab (spk-add tazlab no SliTaz).

Imagens live com o tazlito

Um flavor descreve uma imagem: uma lista de pacotes, arquivos adicionados ao sistema de arquivos raiz e ao CD, e uma receita. Os flavors oficiais estão no repositório flavors. Para construir uma imagem i486 a partir de um flavor com o tazlito, em um sistema ou chroot i486:

# spk-add mercurial
# mkdir -p /home/slitaz/$(cat /etc/slitaz-release)
# cd /home/slitaz/$(cat /etc/slitaz-release)
# hg clone https://hg.slitaz.org/flavors
# tazlito pack-flavor core
# tazlito get-flavor core
# tazlito gen-distro

Edite o flavor (packages.list, rootfs/) antes de empacotá-lo para criar o seu. O tazlito gen-iso reconstrói a imagem depois de alterar a árvore em distro/, e o tazlito clean-distro a remove. Veja o manual do Tazlito.

O Tazlito constrói as imagens i486 oficiais. As imagens híbridas BIOS e UEFI x86_64 são construídas com uma ferramenta mais nova, o metier, ainda não empacotada.

Remasterizar um sistema live

A partir de um sistema live i486 que você personalizou (pacotes, configurações, arquivos em /home), o tazlito pode gravar uma nova imagem dele:

# tazlito writeiso lzma my-slitaz

O kernel e os arquivos de boot são tirados da mídia live, que deve estar montada em /media/cdrom.