cookutils rev 534

move back 'pt_BR' doc name to 'pt' so tazlocale can handle it properly
author Claudinei Pereira <claudinei@slitaz.org>
date Sun Sep 02 13:52:08 2012 -0300 (2012-09-02)
parents 20b1c3b9a3ca
children 5f7de45f7440
files doc/cookutils.pt.html doc/cookutils.pt_BR.html
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/doc/cookutils.pt.html	Sun Sep 02 13:52:08 2012 -0300
     1.3 @@ -0,0 +1,427 @@
     1.4 +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     1.5 +    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     1.6 +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
     1.7 +<head>
     1.8 +	<title>Documentação do Cookutils</title>
     1.9 +    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    1.10 +	<link rel="stylesheet" type="text/css" href="style.css" />
    1.11 +</head>
    1.12 +<body>
    1.13 +	
    1.14 +<div id="header">
    1.15 +	<h1>Documentação do Cookutils</h1>
    1.16 +</div>
    1.17 +
    1.18 +<!-- Start content -->
    1.19 +<div id="content">
    1.20 +
    1.21 +<h2>SliTaz Cook &amp; Cooker</h2>
    1.22 +
    1.23 +<p>
    1.24 +    O Cookutils fornece ferramentas e utilitários que ajudam na construção de
    1.25 +    pacotes para o SliTaz. Estas ferramentas são fáceis de aprender e utilizar,
    1.26 +    rápidas e leves. Você será capaz de criar pacotes para a distribuição em
    1.27 +    apenas alguns comandos. O cookutils fornece os comandos 'cook' e 
    1.28 +	<a href="#cooker">Cooker</a>.
    1.29 +</p>
    1.30 +<p>
    1.31 +    O comando 'cook' permite a compilação e criação de pacotes, fornecendo um
    1.32 +    arquivo de log e checando a qualidade do pacote e do arquivo receipt. O
    1.33 +    Comando 'cooker' é um robô de compilação que fornece automação para a
    1.34 +    compilação, podendo ser usado como interface para o comando 'cook' na 
    1.35 +    medida em que possui uma interface web/CGI que fornece os logs de criação
    1.36 +    de pacotes de forma simples de compreender. Os dois comandos utilizam
    1.37 +    do mesmo wok e arquivos de dados, assim como as informações de pacotes
    1.38 +    <a href="#blocked">bloqueados</a> e quebrados, assim como qualquer outra
    1.39 +    atividade necessária na criação de pacotes.
    1.40 +</p>
    1.41 +<p>
    1.42 +    Para informações técnicas, como estilo de código, por favor consultar o
    1.43 +    arquivo README encontrado nos fontes ou em /usr/share/doc/cookutils.
    1.44 +</p>
    1.45 +
    1.46 +<h3>Utilização do comando Cook</h3>
    1.47 +<p>
    1.48 +    O comando 'cook' fornece uma pequena ajuda pode ser mostrada com a opção
    1.49 +    'usage'. Também possui algumas opções que executam tarefas especiais nos
    1.50 +    pacotes antes ou depois da compilação. Para obter ajuda:
    1.51 +</p>
    1.52 +<pre>
    1.53 +# cook usage
    1.54 +</pre>
    1.55 +
    1.56 +<h3>Howto</h3>
    1.57 +<p>
    1.58 +    A primeira coisa que você deve ter antes de compilar pacotes é configurar
    1.59 +    seu ambiente. As duas formas recomandadas de de fazer isto são: compilar
    1.60 +    pacotes num servidor de compilação ou compilar num ambiente chroot. No caso
    1.61 +    de utilizar um ambiente chroot, pode-se instalar e usar o Tazdev para
    1.62 +    criá-lo e utilizá-lo:
    1.63 +</p>
    1.64 +<pre>
    1.65 +# tazdev gen-chroot &amp;&amp; tazdev chroot
    1.66 +</pre>
    1.67 +<p>
    1.68 +    Por padrão o Tazdev cria um ambiente chroot em /home/slitaz/cooking/chroot
    1.69 +    mas pode-se configurar outro caminho como argumento do comando. A 
    1.70 +    localização do ambiente chroot não é importante, pois quando se entra nele
    1.71 +    os caminhos padrão serão utilizados, como /home/slitaz/wok para o wok ou
    1.72 +    /home/slitaz/log para os logs do 'cook'. Para mostrar a ajuda do tazdev:
    1.73 +	tazdev usage.
    1.74 +</p>
    1.75 +<p>
    1.76 +    Quando se usa o ambiente chroot há dois diretórios especiais montados
    1.77 +    com a opção 'bind': src e packages. Os fontes para todos os pacotes são
    1.78 +    salvos por padrão em /home/slitaz/src, que é montado no chroot para sua
    1.79 +    utilização pelos utilitários. Este método permite compartilhar os fontes
    1.80 +    entre vários ambiente chroot, como um para a versão 'cooking' e outro para
    1.81 +    a estável. O caminho padrão para o diretório de pacotes é:
    1.82 +    /home/slitaz/[versão]/packages. Assim, os pacotes ficam fora do chroot e
    1.83 +    são protegidos caso o ambiente chroot seja removido por algum erro.
    1.84 +</p>
    1.85 +
    1.86 +<h3>Primeiros passos</h3>
    1.87 +<p>
    1.88 +    Para começar os trabalhos de compilação, deve-se preparar o ambiente para
    1.89 +    o comando 'cook'. Ele se utiliza do arquivo de configuração cook.conf,
    1.90 +    onde podem ser informados caminhos alternativos para diretórios e
    1.91 +    arquivos, caso seja necessário. A opção 'setup' cria alguns diretórios e
    1.92 +    arquivos que guardam as informações de atividade e erro. Os arquivos
    1.93 +    criados são em texto puro, podendo ser editados por qualquer editor de 
    1.94 +    texto. Para preparar o ambiente:
    1.95 +</p>
    1.96 +<pre>
    1.97 +# cook setup
    1.98 +</pre>
    1.99 +<p>
   1.100 +    O comando 'setup' possui a opção --wok que permite clonar o wok do SliTaz
   1.101 +    durante a configuração do ambiente para o 'cook'. Mesmo não sendo um 
   1.102 +    desenvolvedor oficial da distribuição, pode-se clonar o repositório e
   1.103 +    utilizar os pacotes existentes como exemplos para criar os seus próprios.
   1.104 +    Para configurar e clonar o wok cooking ou undigest:
   1.105 +</p>
   1.106 +<pre>
   1.107 +# cook setup --wok
   1.108 +# cook setup --undigest
   1.109 +</pre>
   1.110 +
   1.111 +<h3>Testando o ambiente</h3>
   1.112 +<p>
   1.113 +    O 'cook' fornece um comando de teste que cria um pacote e o compila. Isto
   1.114 +    permite verificar se o ambiente funciona corretamente e cria um pacote
   1.115 +    de exemplo com seu respectivo arquivo receipt, chamado 'cooktest', que 
   1.116 +    pode ser removido após o teste. Para criar o pacote de teste:
   1.117 +</p>
   1.118 +<pre>
   1.119 +# cook test
   1.120 +</pre>
   1.121 +
   1.122 +<h3>Criando e compilando</h3>
   1.123 +<p>
   1.124 +    Se o ambiente está configurado corretamente, pode-se iniciar a criação e
   1.125 +    compilação de pacotes para o SliTaz a partir do wok. Para criar um novo
   1.126 +    pacote com um arquivo receipt inicial (que também pode ser criado
   1.127 +    interativamente):
   1.128 +</p>
   1.129 +<pre>
   1.130 +# cook new nome-do-pacote
   1.131 +# cook new nome-do-pacote --interactive
   1.132 +</pre>
   1.133 +<p>
   1.134 +    Após a criação de um novo pacote, é necessária a edição do arquivo receipt
   1.135 +    com um editor de texto. Quando ele está pronto ou se já há um arquivo
   1.136 +    receipt existente, pode-se compilá-lo com o comando:
   1.137 +</p>
   1.138 +<pre>
   1.139 +# cook nome-do-pacote 
   1.140 +</pre>
   1.141 +<p>
   1.142 +    Se tudo correr bem, o pacote pronto será arquivado no diretório
   1.143 +    $SLITAZ/packages e os arquivos produzidos em $SLITAZ/wok/nome-do-pacote.
   1.144 +</p>
   1.145 +
   1.146 +<h3>Compilar e instalar</h3>
   1.147 +<p>
   1.148 +    Para compilar e instalar o pacote num único comando:
   1.149 +</p>
   1.150 +<pre>
   1.151 +# cook nome-do-pacote --install
   1.152 +</pre>
   1.153 +
   1.154 +<h3>Obter fontes</h3>
   1.155 +<p>
   1.156 +    Caso se queira ou seja necessário somente o download dos arquivos fonte
   1.157 +    para um pacote, sem compilá-lo, pode-se utilizar a opção --getsrc:
   1.158 +</p>
   1.159 +<pre>
   1.160 +# cook nome-do-pacote --getsrc
   1.161 +</pre>
   1.162 +
   1.163 +<h3>Limpando resultados da compilação</h3>
   1.164 +<p>
   1.165 +    Após a compilação e empacotamento de algum programa, permanecem no wok
   1.166 +    vários arquivos resultantes do processo, o que ocupa espaço em disco.
   1.167 +    Para limpar um único pacote:
   1.168 +</p>
   1.169 +<pre>
   1.170 +# cook nome-do-pacote --clean
   1.171 +</pre>
   1.172 +<p>
   1.173 +    Pode-se também limpar todo o wok de uma só vez, ou apenas remover os
   1.174 +    arquivos fonte:
   1.175 +</p>
   1.176 +<pre>
   1.177 +# cook clean-wok
   1.178 +# cook clean-src
   1.179 +</pre>
   1.180 +
   1.181 +<h3>Busca</h3>
   1.182 +<p>
   1.183 +    O comando 'cook' oferece uma função de busca simples, que permite achar
   1.184 +    um determinado pacote no wok, utilizando 'grep' e com suporte a 
   1.185 +    expressões regulares:
   1.186 +</p>
   1.187 +<pre>
   1.188 +# cook search busybox
   1.189 +</pre>
   1.190 +
   1.191 +<h3>Lista de pacotes</h3>
   1.192 +<p>
   1.193 +    Pode-se criar uma lista de pacotes no wok, assim como uma lista de pacotes
   1.194 +    para ser utilizada pelo Tazpkg. Isto permite criar um repositório local
   1.195 +    de pacote, assim como cria uma lista de pacotes oficial que é utilizada
   1.196 +    nos mirrors do SliTaz. Para listar os pacotes no wok atual:
   1.197 +</p>
   1.198 +<pre>
   1.199 +$ cook list-wok
   1.200 +</pre>
   1.201 +<p>
   1.202 +    Ao se criar uma lista de pacotes, o 'cook' verifica se há um repositório
   1.203 +    de variantes (flavors) em /home/slitaz/flavors. Caso haja, ele irá 
   1.204 +    compactar as variantes usando a lista de pacotes mais recente. Para
   1.205 +    criar uma lista de pacotes e uma para ser utilizada com as variantes:
   1.206 +</p>
   1.207 +<pre>
   1.208 +# cook pkgdb
   1.209 +</pre>
   1.210 +
   1.211 +<a name="cooker"></a>
   1.212 +<h3>O comando 'cooker'</h3>
   1.213 +<p>
   1.214 +    O cooker é um robô de compilação, que tem por função checar por commits
   1.215 +    em um wok, criar uma listagem da ordem de compilação (cooklist) e compilar
   1.216 +    todos os pacotes. Também pode ser utilizado como interface para o comando
   1.217 +    'cook' pois ambos se utilizam dos mesmos arquivos de configuração. Outra
   1.218 +    função é compilar uma grande lista de pacotes de uma só vez, assim como
   1.219 +    todos os pacotes de uma determinada variante. O cooker possui uma interface
   1.220 +    Web/CGI que funciona por padrão em qualquer sistema SliTaz, pois este
   1.221 +    fornece suporte a CGI no servidor web do busybox (httpd). 
   1.222 +</p>
   1.223 +<p>
   1.224 +    O cooker fornece um pequeno texto de ajuda:
   1.225 +</p>
   1.226 +<pre>
   1.227 +# cooker usage
   1.228 +# cooker -u
   1.229 +</pre>
   1.230 +
   1.231 +<h3>Configuração do Cooker</h3>
   1.232 +<p>
   1.233 +    Assim como o 'cook', o 'cooker' precisa de um ambiente funcional para ser
   1.234 +    utilizado. A principal diferença é que o cooker necessita de dois
   1.235 +    diretórios wok para: um repositório mercurial limpo como referência e um
   1.236 +    wok de trabalho. Desta forma é simples comparar os dois woks para obter
   1.237 +    as modificações necessárias. Caso exista um ambiente de compilação, deve-se
   1.238 +    o wok existente antes de configurar o wok, pois poderá haver algum
   1.239 +    conflito. O comando 'setup' também instala alguns pacotes de
   1.240 +    desenvolvimento, que podem ser configurados no arquivo de configuração
   1.241 +    cook.conf e na variável SETUP_PKGS. Para configurar o ambiente:
   1.242 +</p>
   1.243 +<pre>
   1.244 +# cooker setup
   1.245 +</pre>
   1.246 +<p>
   1.247 +    Se tudo correr bem, serão criados dois diretórios wok, os arquivos básicos
   1.248 +    de desenvolvimento serão instalados e todos os arquivos requeridos criados.
   1.249 +    O comportamento padrão é checar por commits, que pode ser testado com:
   1.250 +</p>
   1.251 +<pre>
   1.252 +# cooker
   1.253 +</pre>
   1.254 +
   1.255 +<h3>Compilando com o cooker</h3>
   1.256 +<p>
   1.257 +    Há duas formas de utilizar o cooker: modificar o repositório mercurial
   1.258 +    wok limpo e executar o cooker sem argumentos ou compilar os pacotes
   1.259 +    manualmente. O cooker permite a compilação de um único pacote ou todos
   1.260 +    os pacotes de uma determinada categoria ou variante. Pode-se também tentar
   1.261 +    compilar todos os pacotes não compilados, mas deve-se ter ciência que esta
   1.262 +    ferramente não foi desenvolvida para suportar a compilação de centenas de
   1.263 +    pacotes de uma só vez.
   1.264 +</p>
   1.265 +<p>
   1.266 +    Para compilar um único pacote, a ferramente funciona mais ou menos como
   1.267 +    o comando 'cook nome-do-pacote', porém produz mais arquivos de log:
   1.268 +</p>
   1.269 +<pre>
   1.270 +# cooker pkg nome-do-pacote 
   1.271 +</pre>
   1.272 +<p>
   1.273 +    Para compilar mais de um pacote de uma só vez, há várias opções. Pode-se
   1.274 +    compilar todos os pacotes de uma variante, pode-se utilizar uma lista
   1.275 +    com nomes de pacotes (cooklist), um por linha, e, ainda, compilar todos os 
   1.276 +    pacotes de uma determinada categoria:
   1.277 +</p>
   1.278 +<pre>
   1.279 +# cooker flavor [nome]
   1.280 +# cooker list [/caminho/para/cooklist]
   1.281 +# cooker cat [categoria]
   1.282 +</pre>
   1.283 +<p>
   1.284 +    O cooker permite recompilar uma determinada revisão do repositório
   1.285 +    mercurial. Isto é útil em ambiente de produção se o robô de compilação
   1.286 +    for interrompido enquanto compila um determinado commit, podendo-se então
   1.287 +    prosseguir com compilação manual dos pacotes:
   1.288 +</p>
   1.289 +<pre>
   1.290 +# cooker rev 9496
   1.291 +</pre>
   1.292 +
   1.293 +<a name="blocked"></a>
   1.294 +<h3>Pacotes bloqueados</h3>
   1.295 +<p>
   1.296 +    O 'cook' e o 'cooker' utilizam uma lista de pacotes bloqueados, nos quais
   1.297 +    são indicados quais pacotes não compilar quando acontece algum commit ou
   1.298 +    ou quando uma lista de pacotes para compilação é utilizada. Isto é útil
   1.299 +    para um robô de compilação em ambiente de produção. Quando se bloqueia ou
   1.300 +    desbloqueia pacotes, pode-se deixar uma nota que será mostrada nas notas
   1.301 +    de compilação (cooknotes). Exemplos para bloquear algum pacote:
   1.302 +</p>
   1.303 +<pre>
   1.304 +# cook nome-do-pacote --block
   1.305 +# cooker block nome-do-pacote
   1.306 +# cooker -n "Nota sobre o pacote bloqueado nome-do-pacote"
   1.307 +</pre>
   1.308 +<p>
   1.309 +    A lista de pacotes bloqueados é mostrada na interface web do cooker. Para
   1.310 +    desbloquear um pacote, pode-se utilizar o 'cooker' ou o 'cook':
   1.311 +</p>
   1.312 +<pre>
   1.313 +# cook nome-do-pacote --unblock
   1.314 +# cooker unblock nome-do-pacote
   1.315 +</pre>
   1.316 +
   1.317 +<h3>Interface Web/CGI do cooker</h3>
   1.318 +<p>
   1.319 +    Para visualizar os logs de compilação, os resultados de atividades e 
   1.320 +    erros do processo, pode-se utilizar a interface web do cooker, localizada
   1.321 +    por padrão no diretório /var/www/cooker. Caso não se utilize de um ambiente
   1.322 +    chroot e se o servidor web httpd do buxybox estiver sendo executado, a
   1.323 +    interface pode ser acessada no endereço: 
   1.324 +    <a href="http://localhost/cooker/cooker.cgi">
   1.325 +		http://localhost/cooker/cooker.cgi</a> 
   1.326 +</p>
   1.327 +<p>
   1.328 +    Caso se utilize de um ambiente chroot, deve-se instalar o 'cookutils' no
   1.329 +    sistema anfitrião (host) e modificar o caminho na variável SLITAZ. Uma
   1.330 +    forma padrão é possuir um chroot em:
   1.331 +</p>
   1.332 +<pre>
   1.333 +/home/slitaz/cooking/chroot
   1.334 +</pre>
   1.335 +<p>
   1.336 +	Com o arquivo /etc/slitaz/cook.conf modificado da seguinte forma:
   1.337 +</p>
   1.338 +<pre>
   1.339 +SLITAZ="/home/slitaz/cooking/chroot/home/slitaz"
   1.340 +</pre>
   1.341 +<p>
   1.342 +    Nota: não é obrigatória a instalação do 'cookutils' no host para usar a
   1.343 +    interface web. Caso o servidor web Lighttpd esteja instalado, pode-se
   1.344 +    copiar os arquivos 'cooker.cgi' e 'style.css' para, por exemplo, o 
   1.345 +    diretório '~/Public' e utilizar um arquivo cook.conf modificado.
   1.346 +    A vantagem de instalar o 'cookutils' no host é obter atualizações 
   1.347 +    regulares com o gerenciador de arquivos Tazpkg. Digamos que se tenha
   1.348 +    clonado ou baixado o cookutils:
   1.349 +</p>
   1.350 +<pre>
   1.351 +$ cp -a cookutils/web ~/Public/cgi-bin/cooker
   1.352 +$ cp -f cookutils/cook.conf ~/Public/cgi-bin/cooker
   1.353 +</pre>
   1.354 +<p>
   1.355 +    Neste caso, edita-se o arquivo de configuração 
   1.356 +    '~/Public/cgi-bin/cooker/cook.conf' para configurar o caminho na variável
   1.357 +    SLITAZ para que tudo funcione.
   1.358 +</p>
   1.359 +
   1.360 +<h3>Notas de compilação (Cooknotes)</h3>
   1.361 +<p>
   1.362 +    As notas de compilação permitem escrever algum texto sobre o processo de
   1.363 +    empacotamento, sendo útil para ambientes colaborativos. Esta função foi
   1.364 +    criada com o intuito de permitir aos desenvolvedores do SliTaz
   1.365 +    compartilharem notas entre si e outros desenvolvedores. O cooker pode
   1.366 +    bloquear a compilação de um pacote ou recompilar um pacote manualmente,
   1.367 +    por exemplo. Então, pode-se criar uma nota sobre o motivo do pacote ter
   1.368 +    sido bloqueado ou ter sido recompilado, para que outro desenvolvedor saiba
   1.369 +    o que está ocorrendo. As notas de compilação são mostradas na interface
   1.370 +    web e podem ser checadas a partir da linha de comando:
   1.371 +</p>
   1.372 +<pre>
   1.373 +# cooker note "Pacote nome-do-pacote bloqueado devido à alta utilização de CPU."
   1.374 +# cooker notes
   1.375 +</pre>
   1.376 +
   1.377 +<h3>Cooker como um robô de compilação</h3>
   1.378 +<p>
   1.379 +    O 'cooker' foi criado para ser o robô de compilação do SliTaz, o que
   1.380 +    significa que ele monitora dois repositórios wok, atualiza o repositório
   1.381 +    mercurial, obtem as diferenças submetidas e compila todos os pacotes
   1.382 +    que foram adicionados ou modificados. A maneira mais segura e limpa de
   1.383 +    executar o cooker como um robô de compilação com agendador de atividades
   1.384 +    cron é utilizando um ambiente chroot, mas o utilitário também pode ser
   1.385 +    executado diretamente no sistema host, caso se queira.
   1.386 +</p>
   1.387 +<p>
   1.388 +    Para executar o cooker automaticamente, deve-se utilizar o agendador de
   1.389 +    tarefas cron, adicionando-se uma linha ao arquivo de configuração deste
   1.390 +    em /var/spool/cron/crontabs. Para configurar para ser executado a cada
   1.391 +    duas horas
   1.392 +</p>
   1.393 +<pre>
   1.394 +* */2 * * * /usr/bin/cooker
   1.395 +</pre>
   1.396 +
   1.397 +<h3>Robô de compilação iniciado durante o boot</h3>
   1.398 +<p>
   1.399 +    O ambiente do 'cooker' e a tarefa do cron podem ser executadas durante o
   1.400 +    boot. Deve-se ter instalado o utilitário 'cookutils-daemon' instalado no
   1.401 +    sistema host e utilizar a instalação padrão para que tudo funcione
   1.402 +    corretamente (diretório cooking em /home/slitaz/cooking). O script daemon
   1.403 +    montará qualquer sistema de arquivos virtual, caso necessário, assim como
   1.404 +    os diretórios de fontes e de pacotes. Os arquivos fonte são localizados em
   1.405 +    /home/slitaz/src e montados no ambiente chroot, para que se possa 
   1.406 +    compartilha-los entre várias versões (estável, cooking, undigest). Para
   1.407 +    instalar o utilitário:
   1.408 +</p>
   1.409 +<pre>
   1.410 +# tazpkg get-install cookutils-daemon
   1.411 +</pre>
   1.412 +<p>
   1.413 +    Para iniciar o daemon deve-se possuir uma tarefa do cron agendada para
   1.414 +    o usuário root no ambiente chroot. O script funcionará como os outros 
   1.415 +    daemons do sistema, podendo ser controlado com:
   1.416 +</p>
   1.417 +<pre>
   1.418 +# /etc/init.d/cooker [start|stop|restart]
   1.419 +</pre>
   1.420 +
   1.421 +<!-- End content -->
   1.422 +</div>
   1.423 +
   1.424 +<div id="footer">
   1.425 +	Copyright &copy; 2011 SliTaz contributors
   1.426 +</div>
   1.427 +
   1.428 +</body>
   1.429 +</html>
   1.430 +
     2.1 --- a/doc/cookutils.pt_BR.html	Sat Aug 11 10:12:48 2012 +0000
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,427 +0,0 @@
     2.4 -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     2.5 -    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2.6 -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt" lang="pt">
     2.7 -<head>
     2.8 -	<title>Documentação do Cookutils</title>
     2.9 -    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    2.10 -	<link rel="stylesheet" type="text/css" href="style.css" />
    2.11 -</head>
    2.12 -<body>
    2.13 -	
    2.14 -<div id="header">
    2.15 -	<h1>Documentação do Cookutils</h1>
    2.16 -</div>
    2.17 -
    2.18 -<!-- Start content -->
    2.19 -<div id="content">
    2.20 -
    2.21 -<h2>SliTaz Cook &amp; Cooker</h2>
    2.22 -
    2.23 -<p>
    2.24 -    O Cookutils fornece ferramentas e utilitários que ajudam na construção de
    2.25 -    pacotes para o SliTaz. Estas ferramentas são fáceis de aprender e utilizar,
    2.26 -    rápidas e leves. Você será capaz de criar pacotes para a distribuição em
    2.27 -    apenas alguns comandos. O cookutils fornece os comandos 'cook' e 
    2.28 -	<a href="#cooker">Cooker</a>.
    2.29 -</p>
    2.30 -<p>
    2.31 -    O comando 'cook' permite a compilação e criação de pacotes, fornecendo um
    2.32 -    arquivo de log e checando a qualidade do pacote e do arquivo receipt. O
    2.33 -    Comando 'cooker' é um robô de compilação que fornece automação para a
    2.34 -    compilação, podendo ser usado como interface para o comando 'cook' na 
    2.35 -    medida em que possui uma interface web/CGI que fornece os logs de criação
    2.36 -    de pacotes de forma simples de compreender. Os dois comandos utilizam
    2.37 -    do mesmo wok e arquivos de dados, assim como as informações de pacotes
    2.38 -    <a href="#blocked">bloqueados</a> e quebrados, assim como qualquer outra
    2.39 -    atividade necessária na criação de pacotes.
    2.40 -</p>
    2.41 -<p>
    2.42 -    Para informações técnicas, como estilo de código, por favor consultar o
    2.43 -    arquivo README encontrado nos fontes ou em /usr/share/doc/cookutils.
    2.44 -</p>
    2.45 -
    2.46 -<h3>Utilização do comando Cook</h3>
    2.47 -<p>
    2.48 -    O comando 'cook' fornece uma pequena ajuda pode ser mostrada com a opção
    2.49 -    'usage'. Também possui algumas opções que executam tarefas especiais nos
    2.50 -    pacotes antes ou depois da compilação. Para obter ajuda:
    2.51 -</p>
    2.52 -<pre>
    2.53 -# cook usage
    2.54 -</pre>
    2.55 -
    2.56 -<h3>Howto</h3>
    2.57 -<p>
    2.58 -    A primeira coisa que você deve ter antes de compilar pacotes é configurar
    2.59 -    seu ambiente. As duas formas recomandadas de de fazer isto são: compilar
    2.60 -    pacotes num servidor de compilação ou compilar num ambiente chroot. No caso
    2.61 -    de utilizar um ambiente chroot, pode-se instalar e usar o Tazdev para
    2.62 -    criá-lo e utilizá-lo:
    2.63 -</p>
    2.64 -<pre>
    2.65 -# tazdev gen-chroot &amp;&amp; tazdev chroot
    2.66 -</pre>
    2.67 -<p>
    2.68 -    Por padrão o Tazdev cria um ambiente chroot em /home/slitaz/cooking/chroot
    2.69 -    mas pode-se configurar outro caminho como argumento do comando. A 
    2.70 -    localização do ambiente chroot não é importante, pois quando se entra nele
    2.71 -    os caminhos padrão serão utilizados, como /home/slitaz/wok para o wok ou
    2.72 -    /home/slitaz/log para os logs do 'cook'. Para mostrar a ajuda do tazdev:
    2.73 -	tazdev usage.
    2.74 -</p>
    2.75 -<p>
    2.76 -    Quando se usa o ambiente chroot há dois diretórios especiais montados
    2.77 -    com a opção 'bind': src e packages. Os fontes para todos os pacotes são
    2.78 -    salvos por padrão em /home/slitaz/src, que é montado no chroot para sua
    2.79 -    utilização pelos utilitários. Este método permite compartilhar os fontes
    2.80 -    entre vários ambiente chroot, como um para a versão 'cooking' e outro para
    2.81 -    a estável. O caminho padrão para o diretório de pacotes é:
    2.82 -    /home/slitaz/[versão]/packages. Assim, os pacotes ficam fora do chroot e
    2.83 -    são protegidos caso o ambiente chroot seja removido por algum erro.
    2.84 -</p>
    2.85 -
    2.86 -<h3>Primeiros passos</h3>
    2.87 -<p>
    2.88 -    Para começar os trabalhos de compilação, deve-se preparar o ambiente para
    2.89 -    o comando 'cook'. Ele se utiliza do arquivo de configuração cook.conf,
    2.90 -    onde podem ser informados caminhos alternativos para diretórios e
    2.91 -    arquivos, caso seja necessário. A opção 'setup' cria alguns diretórios e
    2.92 -    arquivos que guardam as informações de atividade e erro. Os arquivos
    2.93 -    criados são em texto puro, podendo ser editados por qualquer editor de 
    2.94 -    texto. Para preparar o ambiente:
    2.95 -</p>
    2.96 -<pre>
    2.97 -# cook setup
    2.98 -</pre>
    2.99 -<p>
   2.100 -    O comando 'setup' possui a opção --wok que permite clonar o wok do SliTaz
   2.101 -    durante a configuração do ambiente para o 'cook'. Mesmo não sendo um 
   2.102 -    desenvolvedor oficial da distribuição, pode-se clonar o repositório e
   2.103 -    utilizar os pacotes existentes como exemplos para criar os seus próprios.
   2.104 -    Para configurar e clonar o wok cooking ou undigest:
   2.105 -</p>
   2.106 -<pre>
   2.107 -# cook setup --wok
   2.108 -# cook setup --undigest
   2.109 -</pre>
   2.110 -
   2.111 -<h3>Testando o ambiente</h3>
   2.112 -<p>
   2.113 -    O 'cook' fornece um comando de teste que cria um pacote e o compila. Isto
   2.114 -    permite verificar se o ambiente funciona corretamente e cria um pacote
   2.115 -    de exemplo com seu respectivo arquivo receipt, chamado 'cooktest', que 
   2.116 -    pode ser removido após o teste. Para criar o pacote de teste:
   2.117 -</p>
   2.118 -<pre>
   2.119 -# cook test
   2.120 -</pre>
   2.121 -
   2.122 -<h3>Criando e compilando</h3>
   2.123 -<p>
   2.124 -    Se o ambiente está configurado corretamente, pode-se iniciar a criação e
   2.125 -    compilação de pacotes para o SliTaz a partir do wok. Para criar um novo
   2.126 -    pacote com um arquivo receipt inicial (que também pode ser criado
   2.127 -    interativamente):
   2.128 -</p>
   2.129 -<pre>
   2.130 -# cook new nome-do-pacote
   2.131 -# cook new nome-do-pacote --interactive
   2.132 -</pre>
   2.133 -<p>
   2.134 -    Após a criação de um novo pacote, é necessária a edição do arquivo receipt
   2.135 -    com um editor de texto. Quando ele está pronto ou se já há um arquivo
   2.136 -    receipt existente, pode-se compilá-lo com o comando:
   2.137 -</p>
   2.138 -<pre>
   2.139 -# cook nome-do-pacote 
   2.140 -</pre>
   2.141 -<p>
   2.142 -    Se tudo correr bem, o pacote pronto será arquivado no diretório
   2.143 -    $SLITAZ/packages e os arquivos produzidos em $SLITAZ/wok/nome-do-pacote.
   2.144 -</p>
   2.145 -
   2.146 -<h3>Compilar e instalar</h3>
   2.147 -<p>
   2.148 -    Para compilar e instalar o pacote num único comando:
   2.149 -</p>
   2.150 -<pre>
   2.151 -# cook nome-do-pacote --install
   2.152 -</pre>
   2.153 -
   2.154 -<h3>Obter fontes</h3>
   2.155 -<p>
   2.156 -    Caso se queira ou seja necessário somente o download dos arquivos fonte
   2.157 -    para um pacote, sem compilá-lo, pode-se utilizar a opção --getsrc:
   2.158 -</p>
   2.159 -<pre>
   2.160 -# cook nome-do-pacote --getsrc
   2.161 -</pre>
   2.162 -
   2.163 -<h3>Limpando resultados da compilação</h3>
   2.164 -<p>
   2.165 -    Após a compilação e empacotamento de algum programa, permanecem no wok
   2.166 -    vários arquivos resultantes do processo, o que ocupa espaço em disco.
   2.167 -    Para limpar um único pacote:
   2.168 -</p>
   2.169 -<pre>
   2.170 -# cook nome-do-pacote --clean
   2.171 -</pre>
   2.172 -<p>
   2.173 -    Pode-se também limpar todo o wok de uma só vez, ou apenas remover os
   2.174 -    arquivos fonte:
   2.175 -</p>
   2.176 -<pre>
   2.177 -# cook clean-wok
   2.178 -# cook clean-src
   2.179 -</pre>
   2.180 -
   2.181 -<h3>Busca</h3>
   2.182 -<p>
   2.183 -    O comando 'cook' oferece uma função de busca simples, que permite achar
   2.184 -    um determinado pacote no wok, utilizando 'grep' e com suporte a 
   2.185 -    expressões regulares:
   2.186 -</p>
   2.187 -<pre>
   2.188 -# cook search busybox
   2.189 -</pre>
   2.190 -
   2.191 -<h3>Lista de pacotes</h3>
   2.192 -<p>
   2.193 -    Pode-se criar uma lista de pacotes no wok, assim como uma lista de pacotes
   2.194 -    para ser utilizada pelo Tazpkg. Isto permite criar um repositório local
   2.195 -    de pacote, assim como cria uma lista de pacotes oficial que é utilizada
   2.196 -    nos mirrors do SliTaz. Para listar os pacotes no wok atual:
   2.197 -</p>
   2.198 -<pre>
   2.199 -$ cook list-wok
   2.200 -</pre>
   2.201 -<p>
   2.202 -    Ao se criar uma lista de pacotes, o 'cook' verifica se há um repositório
   2.203 -    de variantes (flavors) em /home/slitaz/flavors. Caso haja, ele irá 
   2.204 -    compactar as variantes usando a lista de pacotes mais recente. Para
   2.205 -    criar uma lista de pacotes e uma para ser utilizada com as variantes:
   2.206 -</p>
   2.207 -<pre>
   2.208 -# cook pkgdb
   2.209 -</pre>
   2.210 -
   2.211 -<a name="cooker"></a>
   2.212 -<h3>O comando 'cooker'</h3>
   2.213 -<p>
   2.214 -    O cooker é um robô de compilação, que tem por função checar por commits
   2.215 -    em um wok, criar uma listagem da ordem de compilação (cooklist) e compilar
   2.216 -    todos os pacotes. Também pode ser utilizado como interface para o comando
   2.217 -    'cook' pois ambos se utilizam dos mesmos arquivos de configuração. Outra
   2.218 -    função é compilar uma grande lista de pacotes de uma só vez, assim como
   2.219 -    todos os pacotes de uma determinada variante. O cooker possui uma interface
   2.220 -    Web/CGI que funciona por padrão em qualquer sistema SliTaz, pois este
   2.221 -    fornece suporte a CGI no servidor web do busybox (httpd). 
   2.222 -</p>
   2.223 -<p>
   2.224 -    O cooker fornece um pequeno texto de ajuda:
   2.225 -</p>
   2.226 -<pre>
   2.227 -# cooker usage
   2.228 -# cooker -u
   2.229 -</pre>
   2.230 -
   2.231 -<h3>Configuração do Cooker</h3>
   2.232 -<p>
   2.233 -    Assim como o 'cook', o 'cooker' precisa de um ambiente funcional para ser
   2.234 -    utilizado. A principal diferença é que o cooker necessita de dois
   2.235 -    diretórios wok para: um repositório mercurial limpo como referência e um
   2.236 -    wok de trabalho. Desta forma é simples comparar os dois woks para obter
   2.237 -    as modificações necessárias. Caso exista um ambiente de compilação, deve-se
   2.238 -    o wok existente antes de configurar o wok, pois poderá haver algum
   2.239 -    conflito. O comando 'setup' também instala alguns pacotes de
   2.240 -    desenvolvimento, que podem ser configurados no arquivo de configuração
   2.241 -    cook.conf e na variável SETUP_PKGS. Para configurar o ambiente:
   2.242 -</p>
   2.243 -<pre>
   2.244 -# cooker setup
   2.245 -</pre>
   2.246 -<p>
   2.247 -    Se tudo correr bem, serão criados dois diretórios wok, os arquivos básicos
   2.248 -    de desenvolvimento serão instalados e todos os arquivos requeridos criados.
   2.249 -    O comportamento padrão é checar por commits, que pode ser testado com:
   2.250 -</p>
   2.251 -<pre>
   2.252 -# cooker
   2.253 -</pre>
   2.254 -
   2.255 -<h3>Compilando com o cooker</h3>
   2.256 -<p>
   2.257 -    Há duas formas de utilizar o cooker: modificar o repositório mercurial
   2.258 -    wok limpo e executar o cooker sem argumentos ou compilar os pacotes
   2.259 -    manualmente. O cooker permite a compilação de um único pacote ou todos
   2.260 -    os pacotes de uma determinada categoria ou variante. Pode-se também tentar
   2.261 -    compilar todos os pacotes não compilados, mas deve-se ter ciência que esta
   2.262 -    ferramente não foi desenvolvida para suportar a compilação de centenas de
   2.263 -    pacotes de uma só vez.
   2.264 -</p>
   2.265 -<p>
   2.266 -    Para compilar um único pacote, a ferramente funciona mais ou menos como
   2.267 -    o comando 'cook nome-do-pacote', porém produz mais arquivos de log:
   2.268 -</p>
   2.269 -<pre>
   2.270 -# cooker pkg nome-do-pacote 
   2.271 -</pre>
   2.272 -<p>
   2.273 -    Para compilar mais de um pacote de uma só vez, há várias opções. Pode-se
   2.274 -    compilar todos os pacotes de uma variante, pode-se utilizar uma lista
   2.275 -    com nomes de pacotes (cooklist), um por linha, e, ainda, compilar todos os 
   2.276 -    pacotes de uma determinada categoria:
   2.277 -</p>
   2.278 -<pre>
   2.279 -# cooker flavor [nome]
   2.280 -# cooker list [/caminho/para/cooklist]
   2.281 -# cooker cat [categoria]
   2.282 -</pre>
   2.283 -<p>
   2.284 -    O cooker permite recompilar uma determinada revisão do repositório
   2.285 -    mercurial. Isto é útil em ambiente de produção se o robô de compilação
   2.286 -    for interrompido enquanto compila um determinado commit, podendo-se então
   2.287 -    prosseguir com compilação manual dos pacotes:
   2.288 -</p>
   2.289 -<pre>
   2.290 -# cooker rev 9496
   2.291 -</pre>
   2.292 -
   2.293 -<a name="blocked"></a>
   2.294 -<h3>Pacotes bloqueados</h3>
   2.295 -<p>
   2.296 -    O 'cook' e o 'cooker' utilizam uma lista de pacotes bloqueados, nos quais
   2.297 -    são indicados quais pacotes não compilar quando acontece algum commit ou
   2.298 -    ou quando uma lista de pacotes para compilação é utilizada. Isto é útil
   2.299 -    para um robô de compilação em ambiente de produção. Quando se bloqueia ou
   2.300 -    desbloqueia pacotes, pode-se deixar uma nota que será mostrada nas notas
   2.301 -    de compilação (cooknotes). Exemplos para bloquear algum pacote:
   2.302 -</p>
   2.303 -<pre>
   2.304 -# cook nome-do-pacote --block
   2.305 -# cooker block nome-do-pacote
   2.306 -# cooker -n "Nota sobre o pacote bloqueado nome-do-pacote"
   2.307 -</pre>
   2.308 -<p>
   2.309 -    A lista de pacotes bloqueados é mostrada na interface web do cooker. Para
   2.310 -    desbloquear um pacote, pode-se utilizar o 'cooker' ou o 'cook':
   2.311 -</p>
   2.312 -<pre>
   2.313 -# cook nome-do-pacote --unblock
   2.314 -# cooker unblock nome-do-pacote
   2.315 -</pre>
   2.316 -
   2.317 -<h3>Interface Web/CGI do cooker</h3>
   2.318 -<p>
   2.319 -    Para visualizar os logs de compilação, os resultados de atividades e 
   2.320 -    erros do processo, pode-se utilizar a interface web do cooker, localizada
   2.321 -    por padrão no diretório /var/www/cooker. Caso não se utilize de um ambiente
   2.322 -    chroot e se o servidor web httpd do buxybox estiver sendo executado, a
   2.323 -    interface pode ser acessada no endereço: 
   2.324 -    <a href="http://localhost/cooker/cooker.cgi">
   2.325 -		http://localhost/cooker/cooker.cgi</a> 
   2.326 -</p>
   2.327 -<p>
   2.328 -    Caso se utilize de um ambiente chroot, deve-se instalar o 'cookutils' no
   2.329 -    sistema anfitrião (host) e modificar o caminho na variável SLITAZ. Uma
   2.330 -    forma padrão é possuir um chroot em:
   2.331 -</p>
   2.332 -<pre>
   2.333 -/home/slitaz/cooking/chroot
   2.334 -</pre>
   2.335 -<p>
   2.336 -	Com o arquivo /etc/slitaz/cook.conf modificado da seguinte forma:
   2.337 -</p>
   2.338 -<pre>
   2.339 -SLITAZ="/home/slitaz/cooking/chroot/home/slitaz"
   2.340 -</pre>
   2.341 -<p>
   2.342 -    Nota: não é obrigatória a instalação do 'cookutils' no host para usar a
   2.343 -    interface web. Caso o servidor web Lighttpd esteja instalado, pode-se
   2.344 -    copiar os arquivos 'cooker.cgi' e 'style.css' para, por exemplo, o 
   2.345 -    diretório '~/Public' e utilizar um arquivo cook.conf modificado.
   2.346 -    A vantagem de instalar o 'cookutils' no host é obter atualizações 
   2.347 -    regulares com o gerenciador de arquivos Tazpkg. Digamos que se tenha
   2.348 -    clonado ou baixado o cookutils:
   2.349 -</p>
   2.350 -<pre>
   2.351 -$ cp -a cookutils/web ~/Public/cgi-bin/cooker
   2.352 -$ cp -f cookutils/cook.conf ~/Public/cgi-bin/cooker
   2.353 -</pre>
   2.354 -<p>
   2.355 -    Neste caso, edita-se o arquivo de configuração 
   2.356 -    '~/Public/cgi-bin/cooker/cook.conf' para configurar o caminho na variável
   2.357 -    SLITAZ para que tudo funcione.
   2.358 -</p>
   2.359 -
   2.360 -<h3>Notas de compilação (Cooknotes)</h3>
   2.361 -<p>
   2.362 -    As notas de compilação permitem escrever algum texto sobre o processo de
   2.363 -    empacotamento, sendo útil para ambientes colaborativos. Esta função foi
   2.364 -    criada com o intuito de permitir aos desenvolvedores do SliTaz
   2.365 -    compartilharem notas entre si e outros desenvolvedores. O cooker pode
   2.366 -    bloquear a compilação de um pacote ou recompilar um pacote manualmente,
   2.367 -    por exemplo. Então, pode-se criar uma nota sobre o motivo do pacote ter
   2.368 -    sido bloqueado ou ter sido recompilado, para que outro desenvolvedor saiba
   2.369 -    o que está ocorrendo. As notas de compilação são mostradas na interface
   2.370 -    web e podem ser checadas a partir da linha de comando:
   2.371 -</p>
   2.372 -<pre>
   2.373 -# cooker note "Pacote nome-do-pacote bloqueado devido à alta utilização de CPU."
   2.374 -# cooker notes
   2.375 -</pre>
   2.376 -
   2.377 -<h3>Cooker como um robô de compilação</h3>
   2.378 -<p>
   2.379 -    O 'cooker' foi criado para ser o robô de compilação do SliTaz, o que
   2.380 -    significa que ele monitora dois repositórios wok, atualiza o repositório
   2.381 -    mercurial, obtem as diferenças submetidas e compila todos os pacotes
   2.382 -    que foram adicionados ou modificados. A maneira mais segura e limpa de
   2.383 -    executar o cooker como um robô de compilação com agendador de atividades
   2.384 -    cron é utilizando um ambiente chroot, mas o utilitário também pode ser
   2.385 -    executado diretamente no sistema host, caso se queira.
   2.386 -</p>
   2.387 -<p>
   2.388 -    Para executar o cooker automaticamente, deve-se utilizar o agendador de
   2.389 -    tarefas cron, adicionando-se uma linha ao arquivo de configuração deste
   2.390 -    em /var/spool/cron/crontabs. Para configurar para ser executado a cada
   2.391 -    duas horas
   2.392 -</p>
   2.393 -<pre>
   2.394 -* */2 * * * /usr/bin/cooker
   2.395 -</pre>
   2.396 -
   2.397 -<h3>Robô de compilação iniciado durante o boot</h3>
   2.398 -<p>
   2.399 -    O ambiente do 'cooker' e a tarefa do cron podem ser executadas durante o
   2.400 -    boot. Deve-se ter instalado o utilitário 'cookutils-daemon' instalado no
   2.401 -    sistema host e utilizar a instalação padrão para que tudo funcione
   2.402 -    corretamente (diretório cooking em /home/slitaz/cooking). O script daemon
   2.403 -    montará qualquer sistema de arquivos virtual, caso necessário, assim como
   2.404 -    os diretórios de fontes e de pacotes. Os arquivos fonte são localizados em
   2.405 -    /home/slitaz/src e montados no ambiente chroot, para que se possa 
   2.406 -    compartilha-los entre várias versões (estável, cooking, undigest). Para
   2.407 -    instalar o utilitário:
   2.408 -</p>
   2.409 -<pre>
   2.410 -# tazpkg get-install cookutils-daemon
   2.411 -</pre>
   2.412 -<p>
   2.413 -    Para iniciar o daemon deve-se possuir uma tarefa do cron agendada para
   2.414 -    o usuário root no ambiente chroot. O script funcionará como os outros 
   2.415 -    daemons do sistema, podendo ser controlado com:
   2.416 -</p>
   2.417 -<pre>
   2.418 -# /etc/init.d/cooker [start|stop|restart]
   2.419 -</pre>
   2.420 -
   2.421 -<!-- End content -->
   2.422 -</div>
   2.423 -
   2.424 -<div id="footer">
   2.425 -	Copyright &copy; 2011 SliTaz contributors
   2.426 -</div>
   2.427 -
   2.428 -</body>
   2.429 -</html>
   2.430 -