cookutils rev 316

Add: pt doc
author Claudinei Pereira <claudinei@slitaz.org>
date Wed Mar 14 02:14:00 2012 -0300 (2012-03-14)
parents ca95e28d18a3
children 9109770afce4
files doc/cookutils.pt.html
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/doc/cookutils.pt.html	Wed Mar 14 02:14:00 2012 -0300
     1.3 @@ -0,0 +1,426 @@
     1.4 +<!DOCTYPE html>
     1.5 +<html xmlns="http://www.w3.org/1999/xhtml">
     1.6 +<head>
     1.7 +	<title>Cookutils Documentation</title>
     1.8 +	<meta charset="utf-8" />
     1.9 +	<link rel="stylesheet" type="text/css" href="style.css" />
    1.10 +</head>
    1.11 +<body>
    1.12 +	
    1.13 +<div id="header">
    1.14 +	<h1>Documentação do Cookutils</h1>
    1.15 +</div>
    1.16 +
    1.17 +<!-- Start content -->
    1.18 +<div id="content">
    1.19 +
    1.20 +<h2>SliTaz Cook &amp; Cooker</h2>
    1.21 +
    1.22 +<p>
    1.23 +    O Cookutils fornece ferramentas e utilitários que ajudam na construção de
    1.24 +    pacotes para o SliTaz. Estas ferramentas são fáceis de aprender e utilizar,
    1.25 +    rápidas e leves. Você será capaz de criar pacotes para a distribuição em
    1.26 +    apenas alguns comandos. O cookutils fornece os comandos 'cook' e 
    1.27 +	<a href="#cooker">Cooker</a>.
    1.28 +</p>
    1.29 +<p>
    1.30 +    O comando 'cook' permite a compilação e criação de pacotes, fornecendo um
    1.31 +    arquivo de log e checando a qualidade do pacote e do arquivo receipt. O
    1.32 +    Comando 'cooker' é um robô de compilação que fornece automação para a
    1.33 +    compilação, podendo ser usado como interface para o comando 'cook' na 
    1.34 +    medida em que possui uma interface web/CGI que fornece os logs de criação
    1.35 +    de pacotes de forma simples de compreender. Os dois comandos utilizam
    1.36 +    do mesmo wok e arquivos de dados, assim como as informações de pacotes
    1.37 +    <a href="#blocked">bloqueados</a> e quebrados, assim como qualquer outra
    1.38 +    atividade necessária na criação de pacotes.
    1.39 +</p>
    1.40 +<p>
    1.41 +    Para informações técnicas, como estilo de código, por favor consultar o
    1.42 +    arquivo README encontrado nos fontes ou em /usr/share/doc/cookutils.
    1.43 +</p>
    1.44 +
    1.45 +<h3>Utilização do comando Cook</h3>
    1.46 +<p>
    1.47 +    O comando 'cook' fornece uma pequena ajuda pode ser mostrada com a opção
    1.48 +    'usage'. Também possui algumas opções que executam tarefas especiais nos
    1.49 +    pacotes antes ou depois da compilação. Para obter ajuda:
    1.50 +</p>
    1.51 +<pre>
    1.52 +# cook usage
    1.53 +</pre>
    1.54 +
    1.55 +<h3>Howto</h3>
    1.56 +<p>
    1.57 +    A primeira coisa que você deve ter antes de compilar pacotes é configurar
    1.58 +    seu ambiente. As duas formas recomandadas de de fazer isto são: compilar
    1.59 +    pacotes num servidor de compilação ou compilar num ambiente chroot. No caso
    1.60 +    de utilizar um ambiente chroot, pode-se instalar e usar o Tazdev para
    1.61 +    criá-lo e utilizá-lo:
    1.62 +</p>
    1.63 +<pre>
    1.64 +# tazdev gen-chroot &amp;&amp; tazdev chroot
    1.65 +</pre>
    1.66 +<p>
    1.67 +    Por padrão o Tazdev cria um ambiente chroot em /home/slitaz/cooking/chroot
    1.68 +    mas pode-se configurar outro caminho como argumento do comando. A 
    1.69 +    localização do ambiente chroot não é importante, pois quando se entra nele
    1.70 +    os caminhos padrão serão utilizados, como /home/slitaz/wok para o wok ou
    1.71 +    /home/slitaz/log para os logs do 'cook'. Para mostrar a ajuda do tazdev:
    1.72 +	tazdev usage.
    1.73 +</p>
    1.74 +<p>
    1.75 +    Quando se usa o ambiente chroot há dois diretórios especiais montados
    1.76 +    com a opção 'bind': src e packages. Os fontes para todos os pacotes são
    1.77 +    salvos por padrão em /home/slitaz/src, que é montado no chroot para sua
    1.78 +    utilização pelos utilitários. Este método permite compartilhar os fontes
    1.79 +    entre vários ambiente chroot, como um para a versão 'cooking' e outro para
    1.80 +    a estável. O caminho padrão para o diretório de pacotes é:
    1.81 +    /home/slitaz/[versão]/packages. Assim, os pacotes ficam fora do chroot e
    1.82 +    são protegidos caso o ambiente chroot seja removido por algum erro.
    1.83 +</p>
    1.84 +
    1.85 +<h3>Primeiros passos</h3>
    1.86 +<p>
    1.87 +    Para começar os trabalhos de compilação, deve-se preparar o ambiente para
    1.88 +    o comando 'cook'. Ele se utiliza do arquivo de configuração cook.conf,
    1.89 +    onde podem ser informados caminhos alternativos para diretórios e
    1.90 +    arquivos, caso seja necessário. A opção 'setup' cria alguns diretórios e
    1.91 +    arquivos que guardam as informações de atividade e erro. Os arquivos
    1.92 +    criados são em texto puro, podendo ser editados por qualquer editor de 
    1.93 +    texto. Para preparar o ambiente:
    1.94 +</p>
    1.95 +<pre>
    1.96 +# cook setup
    1.97 +</pre>
    1.98 +<p>
    1.99 +    O comando 'setup' possui a opção --wok que permite clonar o wok do SliTaz
   1.100 +    durante a configuração do ambiente para o 'cook'. Mesmo não sendo um 
   1.101 +    desenvolvedor oficial da distribuição, pode-se clonar o repositório e
   1.102 +    utilizar os pacotes existentes como exemplos para criar os seus próprios.
   1.103 +    Para configurar e clonar o wok cooking ou undigest:
   1.104 +</p>
   1.105 +<pre>
   1.106 +# cook setup --wok
   1.107 +# cook setup --undigest
   1.108 +</pre>
   1.109 +
   1.110 +<h3>Testando o ambiente</h3>
   1.111 +<p>
   1.112 +    O 'cook' fornece um comando de teste que cria um pacote e o compila. Isto
   1.113 +    permite verificar se o ambiente funciona corretamente e cria um pacote
   1.114 +    de exemplo com seu respectivo arquivo receipt, chamado 'cooktest', que 
   1.115 +    pode ser removido após o teste. Para criar o pacote de teste:
   1.116 +</p>
   1.117 +<pre>
   1.118 +# cook test
   1.119 +</pre>
   1.120 +
   1.121 +<h3>Criando e compilando</h3>
   1.122 +<p>
   1.123 +    Se o ambiente está configurado corretamente, pode-se iniciar a criação e
   1.124 +    compilação de pacotes para o SliTaz a partir do wok. Para criar um novo
   1.125 +    pacote com um arquivo receipt inicial (que também pode ser criado
   1.126 +    interativamente):
   1.127 +</p>
   1.128 +<pre>
   1.129 +# cook new nome-do-pacote
   1.130 +# cook new nome-do-pacote --interactive
   1.131 +</pre>
   1.132 +<p>
   1.133 +    Após a criação de um novo pacote, é necessária a edição do arquivo receipt
   1.134 +    com um editor de texto. Quando ele está pronto ou se já há um arquivo
   1.135 +    receipt existente, pode-se compilá-lo com o comando:
   1.136 +</p>
   1.137 +<pre>
   1.138 +# cook nome-do-pacote 
   1.139 +</pre>
   1.140 +<p>
   1.141 +    Se tudo correr bem, o pacote pronto será arquivado no diretório
   1.142 +    $SLITAZ/packages e os arquivos produzidos em $SLITAZ/wok/nome-do-pacote.
   1.143 +</p>
   1.144 +
   1.145 +<h3>Compilar e instalar</h3>
   1.146 +<p>
   1.147 +    Para compilar e instalar o pacote num único comando:
   1.148 +</p>
   1.149 +<pre>
   1.150 +# cook nome-do-pacote --install
   1.151 +</pre>
   1.152 +
   1.153 +<h3>Obter fontes</h3>
   1.154 +<p>
   1.155 +    Caso se queira ou seja necessário somente o download dos arquivos fonte
   1.156 +    para um pacote, sem compilá-lo, pode-se utilizar a opção --getsrc:
   1.157 +</p>
   1.158 +<pre>
   1.159 +# cook nome-do-pacote --getsrc
   1.160 +</pre>
   1.161 +
   1.162 +<h3>Limpando resultados da compilação</h3>
   1.163 +<p>
   1.164 +    Após a compilação e empacotamento de algum programa, permanecem no wok
   1.165 +    vários arquivos resultantes do processo, o que ocupa espaço em disco.
   1.166 +    Para limpar um único pacote:
   1.167 +</p>
   1.168 +<pre>
   1.169 +# cook nome-do-pacote --clean
   1.170 +</pre>
   1.171 +<p>
   1.172 +    Pode-se também limpar todo o wok de uma só vez, ou apenas remover os
   1.173 +    arquivos fonte:
   1.174 +</p>
   1.175 +<pre>
   1.176 +# cook clean-wok
   1.177 +# cook clean-src
   1.178 +</pre>
   1.179 +
   1.180 +<h3>Busca</h3>
   1.181 +<p>
   1.182 +    O comando 'cook' oferece uma função de busca simples, que permite achar
   1.183 +    um determinado pacote no wok, utilizando 'grep' e com suporte a 
   1.184 +    expressões regulares:
   1.185 +</p>
   1.186 +<pre>
   1.187 +# cook search busybox
   1.188 +</pre>
   1.189 +
   1.190 +<h3>Lista de pacotes</h3>
   1.191 +<p>
   1.192 +    Pode-se criar uma lista de pacotes no wok, assim como uma lista de pacotes
   1.193 +    para ser utilizada pelo Tazpkg. Isto permite criar um repositório local
   1.194 +    de pacote, assim como cria uma lista de pacotes oficial que é utilizada
   1.195 +    nos mirrors do SliTaz. Para listar os pacotes no wok atual:
   1.196 +</p>
   1.197 +<pre>
   1.198 +$ cook list-wok
   1.199 +</pre>
   1.200 +<p>
   1.201 +    Ao se criar uma lista de pacotes, o 'cook' verifica se há um repositório
   1.202 +    de variantes (flavors) em /home/slitaz/flavors. Caso haja, ele irá 
   1.203 +    compactar as variantes usando a lista de pacotes mais recente. Para
   1.204 +    criar uma lista de pacotes e uma para ser utilizada com as variantes:
   1.205 +</p>
   1.206 +<pre>
   1.207 +# cook pkgdb
   1.208 +</pre>
   1.209 +
   1.210 +<a name="cooker"></a>
   1.211 +<h3>O comando 'cooker'</h3>
   1.212 +<p>
   1.213 +    O cooker é um robô de compilação, que tem por função checar por commits
   1.214 +    em um wok, criar uma listagem da ordem de compilação (cooklist) e compilar
   1.215 +    todos os pacotes. Também pode ser utilizado como interface para o comando
   1.216 +    'cook' pois ambos se utilizam dos mesmos arquivos de configuração. Outra
   1.217 +    função é compilar uma grande lista de pacotes de uma só vez, assim como
   1.218 +    todos os pacotes de uma determinada variante. O cooker possui uma interface
   1.219 +    Web/CGI que funciona por padrão em qualquer sistema SliTaz, pois este
   1.220 +    fornece suporte a CGI no servidor web do busybox (httpd). 
   1.221 +</p>
   1.222 +<p>
   1.223 +    O cooker fornece um pequeno texto de ajuda:
   1.224 +</p>
   1.225 +<pre>
   1.226 +# cooker usage
   1.227 +# cooker -u
   1.228 +</pre>
   1.229 +
   1.230 +<h3>Configuração do Cooker</h3>
   1.231 +<p>
   1.232 +    Assim como o 'cook', o 'cooker' precisa de um ambiente funcional para ser
   1.233 +    utilizado. A principal diferença é que o cooker necessita de dois
   1.234 +    diretórios wok para: um repositório mercurial limpo como referência e um
   1.235 +    wok de trabalho. Desta forma é simples comparar os dois woks para obter
   1.236 +    as modificações necessárias. Caso exista um ambiente de compilação, deve-se
   1.237 +    o wok existente antes de configurar o wok, pois poderá haver algum
   1.238 +    conflito. O comando 'setup' também instala alguns pacotes de
   1.239 +    desenvolvimento, que podem ser configurados no arquivo de configuração
   1.240 +    cook.conf e na variável SETUP_PKGS. Para configurar o ambiente:
   1.241 +</p>
   1.242 +<pre>
   1.243 +# cooker setup
   1.244 +</pre>
   1.245 +<p>
   1.246 +    Se tudo correr bem, serão criados dois diretórios wok, os arquivos básicos
   1.247 +    de desenvolvimento serão instalados e todos os arquivos requeridos criados.
   1.248 +    O comportamento padrão é checar por commits, que pode ser testado com:
   1.249 +</p>
   1.250 +<pre>
   1.251 +# cooker
   1.252 +</pre>
   1.253 +
   1.254 +<h3>Compilando com o cooker</h3>
   1.255 +<p>
   1.256 +    Há duas formas de utilizar o cooker: modificar o repositório mercurial
   1.257 +    wok limpo e executar o cooker sem argumentos ou compilar os pacotes
   1.258 +    manualmente. O cooker permite a compilação de um único pacote ou todos
   1.259 +    os pacotes de uma determinada categoria ou variante. Pode-se também tentar
   1.260 +    compilar todos os pacotes não compilados, mas deve-se ter ciência que esta
   1.261 +    ferramente não foi desenvolvida para suportar a compilação de centenas de
   1.262 +    pacotes de uma só vez.
   1.263 +</p>
   1.264 +<p>
   1.265 +    Para compilar um único pacote, a ferramente funciona mais ou menos como
   1.266 +    o comando 'cook nome-do-pacote', porém produz mais arquivos de log:
   1.267 +</p>
   1.268 +<pre>
   1.269 +# cooker pkg nome-do-pacote 
   1.270 +</pre>
   1.271 +<p>
   1.272 +    Para compilar mais de um pacote de uma só vez, há várias opções. Pode-se
   1.273 +    compilar todos os pacotes de uma variante, pode-se utilizar uma lista
   1.274 +    com nomes de pacotes (cooklist), um por linha, e, ainda, compilar todos os 
   1.275 +    pacotes de uma determinada categoria:
   1.276 +</p>
   1.277 +<pre>
   1.278 +# cooker flavor [nome]
   1.279 +# cooker list [/caminho/para/cooklist]
   1.280 +# cooker cat [categoria]
   1.281 +</pre>
   1.282 +<p>
   1.283 +    O cooker permite recompilar uma determinada revisão do repositório
   1.284 +    mercurial. Isto é útil em ambiente de produção se o robô de compilação
   1.285 +    for interrompido enquanto compila um determinado commit, podendo-se então
   1.286 +    prosseguir com compilação manual dos pacotes:
   1.287 +</p>
   1.288 +<pre>
   1.289 +# cooker rev 9496
   1.290 +</pre>
   1.291 +
   1.292 +<a name="blocked"></a>
   1.293 +<h3>Pacotes bloqueados</h3>
   1.294 +<p>
   1.295 +    O 'cook' e o 'cooker' utilizam uma lista de pacotes bloqueados, nos quais
   1.296 +    são indicados quais pacotes não compilar quando acontece algum commit ou
   1.297 +    ou quando uma lista de pacotes para compilação é utilizada. Isto é útil
   1.298 +    para um robô de compilação em ambiente de produção. Quando se bloqueia ou
   1.299 +    desbloqueia pacotes, pode-se deixar uma nota que será mostrada nas notas
   1.300 +    de compilação (cooknotes). Exemplos para bloquear algum pacote:
   1.301 +</p>
   1.302 +<pre>
   1.303 +# cook nome-do-pacote --block
   1.304 +# cooker block nome-do-pacote
   1.305 +# cooker -n "Nota sobre o pacote bloqueado nome-do-pacote"
   1.306 +</pre>
   1.307 +<p>
   1.308 +    A lista de pacotes bloqueados é mostrada na interface web do cooker. Para
   1.309 +    desbloquear um pacote, pode-se utilizar o 'cooker' ou o 'cook':
   1.310 +</p>
   1.311 +<pre>
   1.312 +# cook nome-do-pacote --unblock
   1.313 +# cooker unblock nome-do-pacote
   1.314 +</pre>
   1.315 +
   1.316 +<h3>Interface Web/CGI do cooker</h3>
   1.317 +<p>
   1.318 +    Para visualizar os logs de compilação, os resultados de atividades e 
   1.319 +    erros do processo, pode-se utilizar a interface web do cooker, localizada
   1.320 +    por padrão no diretório /var/www/cooker. Caso não se utilize de um ambiente
   1.321 +    chroot e se o servidor web httpd do buxybox estiver sendo executado, a
   1.322 +    interface pode ser acessada no endereço: 
   1.323 +    <a href="http://localhost/cooker/cooker.cgi">
   1.324 +		http://localhost/cooker/cooker.cgi</a> 
   1.325 +</p>
   1.326 +<p>
   1.327 +    Caso se utilize de um ambiente chroot, deve-se instalar o 'cookutils' no
   1.328 +    sistema anfitrião (host) e modificar o caminho na variável SLITAZ. Uma
   1.329 +    forma padrão é possuir um chroot em:
   1.330 +</p>
   1.331 +<pre>
   1.332 +/home/slitaz/cooking/chroot
   1.333 +</pre>
   1.334 +<p>
   1.335 +	Com o arquivo /etc/slitaz/cook.conf modificado da seguinte forma:
   1.336 +</p>
   1.337 +<pre>
   1.338 +SLITAZ="/home/slitaz/cooking/chroot/home/slitaz"
   1.339 +</pre>
   1.340 +<p>
   1.341 +    Nota: não é obrigatória a instalação do 'cookutils' no host para usar a
   1.342 +    interface web. Caso o servidor web Lighttpd esteja instalado, pode-se
   1.343 +    copiar os arquivos 'cooker.cgi' e 'style.css' para, por exemplo, o 
   1.344 +    diretório '~/Public' e utilizar um arquivo cook.conf modificado.
   1.345 +    A vantagem de instalar o 'cookutils' no host é obter atualizações 
   1.346 +    regulares com o gerenciador de arquivos Tazpkg. Digamos que se tenha
   1.347 +    clonado ou baixado o cookutils:
   1.348 +</p>
   1.349 +<pre>
   1.350 +$ cp -a cookutils/web ~/Public/cgi-bin/cooker
   1.351 +$ cp -f cookutils/cook.conf ~/Public/cgi-bin/cooker
   1.352 +</pre>
   1.353 +<p>
   1.354 +    Neste caso, edita-se o arquivo de configuração 
   1.355 +    '~/Public/cgi-bin/cooker/cook.conf' para configurar o caminho na variável
   1.356 +    SLITAZ para que tudo funcione.
   1.357 +</p>
   1.358 +
   1.359 +<h3>Notas de compilação (Cooknotes)</h3>
   1.360 +<p>
   1.361 +    As notas de compilação permitem escrever algum texto sobre o processo de
   1.362 +    empacotamento, sendo útil para ambientes colaborativos. Esta função foi
   1.363 +    criada com o intuito de permitir aos desenvolvedores do SliTaz
   1.364 +    compartilharem notas entre si e outros desenvolvedores. O cooker pode
   1.365 +    bloquear a compilação de um pacote ou recompilar um pacote manualmente,
   1.366 +    por exemplo. Então, pode-se criar uma nota sobre o motivo do pacote ter
   1.367 +    sido bloqueado ou ter sido recompilado, para que outro desenvolvedor saiba
   1.368 +    o que está ocorrendo. As notas de compilação são mostradas na interface
   1.369 +    web e podem ser checadas a partir da linha de comando:
   1.370 +</p>
   1.371 +<pre>
   1.372 +# cooker note "Pacote nome-do-pacote bloqueado devido à alta utilização de CPU."
   1.373 +# cooker notes
   1.374 +</pre>
   1.375 +
   1.376 +<h3>Cooker como um robô de compilação</h3>
   1.377 +<p>
   1.378 +    O 'cooker' foi criado para ser o robô de compilação do SliTaz, o que
   1.379 +    significa que ele monitora dois repositórios wok, atualiza o repositório
   1.380 +    mercurial, obtem as diferenças submetidas e compila todos os pacotes
   1.381 +    que foram adicionados ou modificados. A maneira mais segura e limpa de
   1.382 +    executar o cooker como um robô de compilação com agendador de atividades
   1.383 +    cron é utilizando um ambiente chroot, mas o utilitário também pode ser
   1.384 +    executado diretamente no sistema host, caso se queira.
   1.385 +</p>
   1.386 +<p>
   1.387 +    Para executar o cooker automaticamente, deve-se utilizar o agendador de
   1.388 +    tarefas cron, adicionando-se uma linha ao arquivo de configuração deste
   1.389 +    em /var/spool/cron/crontabs. Para configurar para ser executado a cada
   1.390 +    duas horas
   1.391 +</p>
   1.392 +<pre>
   1.393 +* */2 * * * /usr/bin/cooker
   1.394 +</pre>
   1.395 +
   1.396 +<h3>Robô de compilação iniciado durante o boot</h3>
   1.397 +<p>
   1.398 +    O ambiente do 'cooker' e a tarefa do cron podem ser executadas durante o
   1.399 +    boot. Deve-se ter instalado o utilitário 'cookutils-daemon' instalado no
   1.400 +    sistema host e utilizar a instalação padrão para que tudo funcione
   1.401 +    corretamente (diretório cooking em /home/slitaz/cooking). O script daemon
   1.402 +    montará qualquer sistema de arquivos virtual, caso necessário, assim como
   1.403 +    os diretórios de fontes e de pacotes. Os arquivos fonte são localizados em
   1.404 +    /home/slitaz/src e montados no ambiente chroot, para que se possa 
   1.405 +    compartilha-los entre várias versões (estável, cooking, undigest). Para
   1.406 +    instalar o utilitário:
   1.407 +</p>
   1.408 +<pre>
   1.409 +# tazpkg get-install cookutils-daemon
   1.410 +</pre>
   1.411 +<p>
   1.412 +    Para iniciar o daemon deve-se possuir uma tarefa do cron agendada para
   1.413 +    o usuário root no ambiente chroot. O script funcionará como os outros 
   1.414 +    daemons do sistema, podendo ser controlado com:
   1.415 +</p>
   1.416 +<pre>
   1.417 +# /etc/init.d/cooker [start|stop|restart]
   1.418 +</pre>
   1.419 +
   1.420 +<!-- End content -->
   1.421 +</div>
   1.422 +
   1.423 +<div id="footer">
   1.424 +	Copyright &copy; 2011 SliTaz contributors
   1.425 +</div>
   1.426 +
   1.427 +</body>
   1.428 +</html>
   1.429 +