O CVSup é uma alternativa ao uso do CVS anônimo para trazer a árvore de fontes do PostgreSQL. O CVSup foi desenvolvido por John Polstra (<jdp@polstra.com> ) para distribuir repositórios CVS e outras árvores de arquivos para o projeto FreeBSD.
Uma das principais vantagens em utilizar o CVSup é que este pode replicar, confiavelmente, todo o repositório CVS no sistema local, permitindo acesso local rápido às operações do CVS, como log e diff. Entre outras vantagens está a sincronização rápida com o servidor PostgreSQL devido a um protocolo de transferência de fluxo eficiente, que envia apenas as modificações realizadas desde a última atualização.
São necessárias duas áreas de diretório para o CVSup realizar seu trabalho: um repositório CVS local (ou simplesmente uma área de diretório, se estiver sendo trazido um instantâneo em vez do repositório; veja abaixo), e uma área local para registrar as transações do CVSup. Estas duas áreas podem coexistir na mesma árvore de diretório.
Decidir onde se deseja manter a cópia local do repositório CVS. Em um dos nossos sistemas foi definido recentemente o repositório em /home/cvs/, mas estava sendo mantido anteriormente sob a árvore de desenvolvimento do PostgreSQL em /opt/postgres/cvs/. Caso se pretenda manter o repositório em /home/cvs/, então deve ser colocado
setenv CVSROOT /home/cvs
no arquivo .cshrc do usuário, ou uma linha semelhante no arquivo .bashrc ou .profile, dependendo do interpretador de comandos utilizado.
A área de repositório do cvs deve ser inicializada. Após CVSROOT ser definido, então a inicialização pode ser feita com um único comando:
$ cvs init
após o qual deve ser visto pelo menos um diretório chamado CVSROOT ao se listar o diretório CVSROOT:
$ ls $CVSROOT CVSROOT/
Verificar se o programa cvsup está no caminho de procura; na maioria dos sistemas operacionais é feito digitando
which cvsup
Depois, basta executar o cvsup utilizando:
$ cvsup -L 2 postgres.cvsup
onde -L 2 ativa algumas mensagens de status, permitindo monitorar a evolução da atualização, e postgres.cvsup é o caminho e nome atribuído ao arquivo de configuração do CVSup.
Abaixo está mostrado um arquivo de configuração do CVSup modificado para uma instalação específica, e que mantém um repositório local CVS completo:
# This file represents the standard CVSup distribution file
# for the PostgreSQL ORDBMS project
# Modified by lockhart@fourpalms.org 1997-08-28
# - Point to my local snapshot source tree
# - Pull the full CVS repository, not just the latest snapshot
#
# Defaults that apply to all the collections
*default host=cvsup.postgresql.org
*default compress
*default release=cvs
*default delete use-rel-suffix
# enable the following line to get the latest snapshot
#*default tag=.
# enable the following line to get whatever was specified above or by default
# at the date specified below
#*default date=97.08.29.00.00.00
# base directory where CVSup will store its 'bookmarks' file(s)
# will create subdirectory sup/
#*default base=/opt/postgres # /usr/local/pgsql
*default base=/home/cvs
# prefix directory where CVSup will store the actual distribution(s)
*default prefix=/home/cvs
# complete distribution, including all below
pgsql
# individual distributions vs 'the whole thing'
# pgsql-doc
# pgsql-perl5
# pgsql-src
Na configuração acima, Se for especificada a opção repository em vez de pgsql, será obtida uma cópia completa de todo o repositório localizado em cvsup.postgresql.org, incluindo o diretório CVSROOT. Se isto for feito, provavelmente será desejado excluir os arquivos neste diretório que se desejar modificar localmente, utilizando um arquivo de recusa. Por exemplo, para a configuração acima pode ser criado o arquivo /home/cvs/sup/repository/refuse:
CVSROOT/config* CVSROOT/commitinfo* CVSROOT/loginfo*
Para se informar sobre como usar os arquivos de recusa, devem ser consultadas as páginas do manual do CVSup.
A seguir está mostrado o arquivo de configuração sugerido do CVSup, tirado do site de ftp do PostgreSQL, que traz o instantâneo corrente apenas:
# This file represents the standard CVSup distribution file # for the PostgreSQL ORDBMS project # # Defaults that apply to all the collections *default host=cvsup.postgresql.org *default compress *default release=cvs *default delete use-rel-suffix *default tag=. # base directory where CVSup will store its 'bookmarks' file(s) *default base=/usr/local/pgsql # prefix directory where CVSup will store the actual distribution(s) *default prefix=/usr/local/pgsql # complete distribution, including all below pgsql # individual distributions vs 'the whole thing' # pgsql-doc # pgsql-perl5 # pgsql-src
O CVSup está disponível sob a forma de fonte, binários pré-construídos, e RPMs do Linux . É muito muito mais fácil usar os binários que construir a partir do fonte, principalmente porque é necessário para a construção o muito poderoso, mas muito grande, compilador Modula-3.
Instalação do CVSup a partir dos binários
Podem ser utilizados binários pré-construídos se for utilizada uma plataforma para a qual os binários estão disponíveis no site de ftp do PostgreSQL, ou se estiver utilizando o FreeBSD, para o qual o CVSup está disponível como um "port". [1]
Nota: O CVSup foi desenvolvido originalmente como uma ferramenta para distribuição da árvore de fontes do FreeBSD. Está disponível como um "port" e, para os usuários do FreeBSD, se não for suficiente informar como obter e instalá-lo então, por favor, contribua enviando o procedimento.
Quando esta documentação foi escrita, haviam binários disponíveis para Alpha/Tru64, ix86/xBSD, HPPA/HP-UX 10.20, MIPS/IRIX, ix86/linux-libc5, ix86/linux-glibc, Sparc/Solaris e Sparc/SunOS.
Obter o arquivo binário tar do cvsup ( para ser um cliente não é necessário cvsupd) apropriado para a plataforma sendo usada.
Se estiver sendo utilizado o FreeBSD, deverá ser instalado o "port" do CVSup.
Se estiver sendo utilizada uma outra plataforma, deverá ser procurado e baixado o binário apropriado no sítio de FTP do PostgreSQL.
Analisar o arquivo tar para verificar o conteúdo e a estrutura de diretório, se houver alguma. Pelo menos no arquivo tar do Linux, o binário estático e as páginas do manual estão incluídas no pacote sem nenhum diretório.
Se o binário estiver no nível mais alto do arquivo tar, então deve-se simplesmente fazer a extração do arquivo tar no diretório de destino:
$ cd /usr/local/bin $ tar zxvf /usr/local/src/cvsup-16.0-linux-i386.tar.gz $ mv cvsup.1 ../doc/man/man1/
Havendo uma estrutura de diretório no arquivo tar, então o arquivo tar deverá ser extraído dentro do diretório /usr/local/src, e os binários movidos para o local apropriado conforme mostrado acima.
Deve-se garantir que os novos binários podem ser encontrados no caminho de procura.
$ rehash
$ which cvsup
$ set path=(caminho para o cvsup $path)
$ which cvsup
/usr/local/bin/cvsup
A instalação do CVSup a partir dos arquivos fonte não é totalmente trivial, principalmente porque na maioria dos sistemas é necessário instalar antes o compilador Modula-3. Este compilador está disponível como um arquivo RPM para o Linux, um pacote FreeBSD, ou como código fonte.
Nota: A instalação do Modula-3 a partir dos fontes ocupa cerca de 200MB de espaço em disco, que fica reduzido para cerca de 50MB de espaço quando os fontes são removidos.
Instalação no Linux
Instalar o Modula-3.
Obter a distribuição do Modula-3 em Polytechnique Montréal Modula-3 (PM3), que está ativamente mantendo o código base desenvolvido originalmente pelo DEC Systems Research Center. A distribuição do RPM do PM3 comprimida tem aproximadamente 30MB. Quando este documento foi escrito, a versão 1.1.10-1 instalava sem problemas no RH-5.2, enquanto a versão 1.1.11-1 era aparentemente feita para outra versão (RH-6.0?), e não executava no RH-5.2.
Dica: Este empacotamento de rpm em particular possui muitos arquivos RPM e, portanto, provavelmente se desejará colocá-los em um diretório separado.
Instalar os rpms do Modula-3:
# rpm -Uvh pm3*.rpm
Descompactar a distribuição do cvsup:
# cd /usr/local/src # tar zxf cvsup-16.0.tar.gz
Construir a distribuição do cvsup, suprimindo a funcionalidade de interface gráfica para evitar a necessidade de bibliotecas do X11:
# make M3FLAGS="-DNOGUI"
e, se for desejado construir um binário estático que possa ser movido para sistemas que não possuam o Modula-3 instalado, tente:
# make M3FLAGS="-DNOGUI -DSTATIC"
Instalar o binário construído:
# make M3FLAGS="-DNOGUI -DSTATIC" install
[1] |
Para o Debian basta executar "apt-get install cvsup". (N. do T.) |