Existem vários casos onde você precisará limpar manualmente uma compilação:
Você a interrompeu manualmente.
O pointyhat foi reiniciado enquanto uma
compilação estava executando.
O qmanager falhou e reiniciado
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.
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
chroots 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.
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.
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>.