Procedimentos para Construção de Pacotes
Anterior |  | Próxima

# 7 Manutenção da Compilação

Existem vários casos onde você precisará limpar manualmente uma compilação:

1. Você a interrompeu manualmente.

2. O `pointyhat` foi reiniciado enquanto uma compilação estava executando.

3. O `qmanager` falhou e reiniciado

## 7.1 Interrompendo uma Compilação

O processo para interromper de forma manual uma compilação é um tanto quanto confuso. Primeiro você precisa identificar o `tty` em que ela está sendo executada rodando (ou lembrando-se da saída do tty(1) quando você iniciou a compilação, ou usando `ps x` para identificá-lo). Você precisa certificar-se de que não existe mais nada importante rodando neste `tty`, você pode verificar isto executando o comando `ps`, por exemplo, `ps -t p1` lista os processos em execução no tty 1. Se não existir mais nada importante, você pode encerrar o terminal facilmente com `pkill -t pts/1`; ou pode utilizar o `kill -HUP`, por exemplo, `ps -t pts/1 -o pid= | xargs kill -HUP`. Você deve Substitur o `p1` pelo `tty` utilizado na compilação.

A compilação de pacote enviada pelo `make` para as máquinas clientes irá se auto limpar após alguns minutos (verifique com `ps x` até que todos finalizem).

Se você não encerrar o make(1), ele irá iniciar novas tarefas de compilação. Se você não encerrar o `dopackages` ele irá reiniciar toda a compilação. Se você não encerrar os processos `pdispatch`, eles irão continuar (ou reaparecer) até concluir a compilação do pacote.

## 7.2 Limpando uma Compilação

Para liberar recursos, você precisa limpar as máquinas clientes executando o comando `build cleanup`. Por exemplo:

    % /var/portbuild/scripts/build cleanup i386 8-exp 20080714120411 -full

Se você esquecer de fazer isso, então os `chroot`s da compilação antiga não serão limpos nas próximas 24 horas, e nenhum novo trabalho será iniciado no seu lugar enquanto o `pointyhat` achar que esta máquina ainda está ocupada.

Para verificar, utilize o comando `cat ~/loads/*` para mostrar o status das máquinas clientes; a primeira coluna é o número de trabalhos que ela pensa estar executando, e isso pode estar bem próximo da carga média. O `loads` é atualizado a cada 2 minutos. Se você executar um `ps x | grep pdispatch` e ele listar menos trabalhos do que os que o `loads` pensa estarem em uso, você está em apuros.

Você pode ter problemas com instâncias do comando `umount` ficando congeladas. Se isto ocorrer, você terá que usar o `script` `allgohans` para executar um comando ssh(1) em todos os clientes deste ambiente de compilação. Por exemplo:

    ssh -l root gohan24 df

Vai lhe dar um `df`, e

    allgohans "umount -f pointyhat.freebsd.org:/var/portbuild/i386/8-exp/ports"
    allgohans "umount -f pointyhat.freebsd.org:/var/portbuild/i386/8-exp/src"

Supostamente irá resolver o problema dos `mounts` que não foram desconectados pelo `umount`. Você terá que continuar executando-os pois podem existir diversas montagens.

> Nota: Ignore o seguinte:

>     umount: pointyhat.freebsd.org:/var/portbuild/i386/8-exp/ports: statfs: No such file or directory
>     umount: pointyhat.freebsd.org:/var/portbuild/i386/8-exp/ports: unknown file system
>     umount: Cleanup of /x/tmp/8-exp/chroot/53837/compat/linux/proc failed!
>     /x/tmp/8-exp/chroot/53837/compat/linux/proc: not a file system root directory

> Os dois primeiros significam que o cliente não tinha o sistema de arquivos montado; os dois últimos são um defeito.

> Você também poderá ver mensagens sobre o `procfs`.

Após concluir tudo que foi exposto acima, remova o arquivo ``${arch}`/lock` antes de tentar reiniciar a compilação. Se você não o fizer, o `dopackages` simplesmente será encerrado.

Se você atualizou a árvore de `ports` antes de reiniciar, você pode precisar reconstruir o `duds`, o `INDEX`, ou ambos os arquivos.

## 7.3 Manutenção de compilações com o comando `build`

Aqui está o resto das opções para o comando `build`:

- `build destroy `arch` `branch`` - Destrói o `id` da compilação.

- `build list `arch` `branch`` - Mostra o conjunto atual de `ids` de compilações.

- `build upload `arch` `branch`` - ainda não implementado.

Anterior | Principal | Próxima
Anatomia de uma compilação |  | Monitorando a Compilação

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.