A.4. Usando o CTM

CTM é um método para manter uma árvore de diretórios remota sincronizada com uma central. Ele foi desenvolvido para manter árvores de diretórios dos fontes do FreeBSD atualizadas, no entanto ele também pode ser usado para outros propósitos. Existe pouca documentação para o processo de criação de ``deltas'', assim, fale com Poul-Henning Kamp para obter mais informações se você pretende usar o CTM para outras finalidades.

A.4.1. Porque Devo Usar o CTM?

CTM dará a você uma cópia local da árvore de diretórios dos fontes do FreeBSD. Existem vários tipos de árvores disponíveis. Se você pretende localizar toda a árvore do CVS ou somente um de seus ramos, o CTM lhe fornecerá a informação necessária. Se você participa do desenvolvimento do FreeBSD, mas não tem, ou possui uma conexão TCP/IP ruim, ou ainda, simplesmente deseja que as alterações sejam enviadas automaticamente para você, o CTM faz isso. Você precisará obter pelo menos 3 atualizações por dia dos ramos mais alterados, porém você deve considerar que elas estarão sendo enviadas automaticamente por email. O tamanho das atualizações são sempre os menores possíveis, tipicamente menores que 5K, com alguma eventual ( uma em dez ) entre 10 e 50 K e muito raramente uma grande, ao redor de 100K.

Você deve estar atento aos problemas que podem ocorrer ao trabalhar com a versão em desenvolvimento ao invés de trabalhar com uma versão pré-empacotada. Especialmente se você trabalhar com os fontes ``current''. Leia o documento Trabalhando com o ramo ``current'' do FreeBSD.

A.4.2. O que É Necessário para Usar o CTM?

Você precisa de duas coisas: O programa CTM e os ``deltas'' iniciais para alimentá-lo ( para chegar até o nível ``current'' ).

O programa CTM faz parte do FreeBSD desde a versão 2.0 e fica em /usr/src/usr.sbin/ctm, se você tiver os fontes do FreeBSD disponíveis.

Se você está rodando uma versão anterior a 2.0, o programa CTM atualizado pode ser obtido de:

http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.sbin/ctm/

Os ``deltas'' para serem passados ao CTM podem ser obtidos de duas maneiras, FTP ou email. Se você puder fazer FTP para a Internet, então você pode acessar ao CTM nos seguintes sítios:

ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/

ou veja a seção Repositórios CTM.

De um repositório CTM pegue o arquivo README e inicie a partir dele.

Se você deseja obter os ``Deltas'' por email:

Inscreva-se numa das seguintes listas de distribuição CTM. ctm-cvs-cur mantém toda a árvore CVS. ctm-src-cur mantém o ramo de desenvolvimento ``head''. ctm-src-4 mantém o ramo das versões 4.X , etc.. (Se você não sabe como inscrever-se numa lista, clique no nome da lista desejada acima ou vá para http://lists.FreeBSD.org/mailman/listinfo e clique na lista que você deseja se inscrever. A página da lista deve conter todas as instruções necessárias para a inscrição.)

Quando você receber por email suas atualizações do CTM você pode usar o programa ctm_rmail para descompactá-las e aplicá-las em seu sistema. Na verdade, você pode executar o programa ctm_rmail a partir de uma entrada do /etc/aliases, se você quiser que este processo tenha uma execução automática. Consulte o comando ctm_rmail no man pages para obter mais detalhes.

Nota: Não importa o método usado para obter os ``deltas'' CTM, você deve inscrever-se na lista ctm-announce. No futuro, ela será o único lugar onde novos anúncios referentes a operação do CTM serão colocados. Clique no nome da lista acima e siga as instruções para inscrever-se.

A.4.3. Usando o CTM pela Primeira Vez

Antes de começar a usar os ``deltas'' CTM, você precisará estabelecer uma posição de início para os ``deltas'' que serão produzidos a partir dele.

Primeiro você precisa determinar o que você já tem. Você pode iniciar de um diretório ``vazio''. Você deve usar um ``Empty Delta'' para iniciar sua árvore CTM. Existe a intenção de que no futuro sejam distribuídos ``deltas iniciais'' em CDs, mas atualmente isso ainda não é feito.

Considerando que a árvore de diretórios tem dezenas de Megabytes, é preferível iniciar a partir de algo que você tenha à mão. Se você tiver um -RELEASE CD, você poderá copiar a árvore inicial de diretórios dele. Isso já economizará muito tempo de transferência de dados.

Você pode reconhecer os ``deltas'' iniciais pelo X que segue o número (src-cur.3210XEmpty.gz, por exemplo). A designação que segue o X corresponde a origem da ``semente'' inicial que você possui. Empty é um diretório vazio. Como regra, um novo arquivo XEmpty é gerado a cada 100 ``deltas''. A propósito, os arquivos são enormes! Arquivos de 70 a 80 Megabytes de dados compactados com o gzip são comuns para os deltas XEmpty.

Uma vez que você escolheu um ``delta'' para iniciar você também precisará de todos com números maiores do que o escolhido.

A.4.4. Usando o CTM no Dia a Dia

Para aplicar os ``deltas'' recebidos à sua instalação, digite:

# cd /onde/você/quiser/colocar/os/arquivos
# ctm -v -v /onde/você/guarda/os/deltas/recebidos/src-xxx.*

CTM entende os ``deltas'' que foram enviados compactados com o gzip, logo você não precisa descompactá-los primeiro, isto economiza espaço em disco.

A não ser que ele se sinta seguro sobre todo o processo, o CTM não alterará sua árvore de diretórios. Para verificar um ``delta'' você pode usar a opção -c do CTM, ele não atualizará nada, apenas verificará a integridade do ``delta'' e verá se ele pode ser aplicado sem problemas a sua árvore de diretórios.

Existem outras opções do CTM, para conhecê-las veja o MAN PAGES ou analise seus fontes.

Na realidade isso é tudo que ele faz. Toda vez que você recebe um novo ``delta'', rode o CTM nele para manter seus fontes sempre atualizados.

Não remova os ``deltas'' se eles forem grandes para baixá-los de novo. Você pode guardá-los para o caso de algum problema vir a acontecer. Se você só tem unidade de disquetes considere a possibilidade de usar o programa fdwrite para guardá-los.

A.4.5. Mantendo suas Próprias Alterações Locais

Como um desenvolvedor você pode querer fazer experiências alterando códigos fontes em sua própria árvore de diretórios local. O CTM suporta estas modificações de uma forma limitada: quando verificando a existência de um arquivo foo, ele primeiro verifica a existência do foo.ctm. Se ele existe o, CTM trabalhará com ele e não com o arquivo foo.

Esse comportamento nos dá um modo simples de manter alterações locais: simplesmente copie o arquivo que você pretende modificar para outro com o mesmo nome com a terminação .ctm. Então você pode alterar o arquivo despreocupadamente enquanto o CTM mantém o arquivo com a terminação .ctm atualizado.

A.4.6. Outras Opções Interessantes do CTM

A.4.6.1. Descobrindo Exatamente o que Será Atualizado

Você pode obter uma lista das alterações que serão realizadas pelo CTM no seu repositório de fontes usando a opção -l.

Isto é útil se você deseja manter um log das modificações realizadas no seu repositório, de alguma maneira pré- ou pós- processar as linhas modificadas, ou apenas se você está se sentindo um pouco paranóico.

A.4.6.2. Fazendo Backup Antes de Atualizar

Algumas vezes você poderá querer fazer backup dos arquivos que serão modificados pelo CTM.

Especificar a opção -B backup-file faz com que o CTM copie todos os arquivos que serão modificados por um determinado ``delta'' para o arquivo backup-file.

A.4.6.3. Restringindo os Arquivos que Serão Atualizados

Em alguma ocasião você pode ter interesse em restringir a atualização do CTM ou pode ter interesse em extrair apenas alguns arquivos de uma sequência de ``deltas'' recebidos.

Você pode controlar a atualização de uma lista de arquivos recebidos estabelecendo regras de filtragem usando as opções -e e -x.

Por exemplo, para extrair uma cópia atualizada do lib/libc/Makefile do conjunto de ``deltas'' recebidos, execute os comandos:

# cd /para/onde/você/costuma/extrair/ele/
# ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*

Para todo arquivo especificado num ``delta'' CTM as opções -e e -x são processadas na ordem em que aparecem na linha de comando. O arquivo é processado pelo CTM somente se ele permanece indicado como processável depois que todas as opções -e e -x foram aplicadas a ele.

A.4.7. Planos Futuros para o CTM

Um monte deles:

A.4.8. Miscelânea

Existe também uma sequência de ``deltas'' para o ports, mas o interesse nele ainda não tem sido alto.

A.4.9. Repositórios CTM

CTM/FreeBSD está disponível por FTP anônimo nos seguintes sítios. Se você optar por obter o CTM por FTP anônimo, por favor, tente usar um sítio perto de você.

No caso de problemas, contacte Poul-Henning Kamp .

Se você não encontrar um servidor perto de você ou se o servidor estiver incompleto, tente usar um sítio de busca como alltheweb.

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>.