Capítulo 18. Obtendo o código-fonte com CVS

Índice
18.1. Obtendo as fontes do sistema e do userland
18.2. Obtendo o pkgsrc

O autor deste capítulo (Obtendo o código-fonte com CVS) é Reinoud Koornstra

CVS (Concurrent Versions System) é um sistema de controle de versões que pode ser usado para manter atualizada a árvore das fontes do sistema presente em locais com modificações realizadas nas fontes "oficiais" do NetBSD. Há três árvores (ou mais precisamente, três ramos de uma mesma árvore) que podem ser usadas como referência para se manter atualizadas as fontes locais: o ramo current, com o qual se pode seguir a linha de desenvolvimento corrente (isto é, aquela mais avançada mas potencialmente menos estável), o ramo relativo à release 1.5, ao qual são aplicadas as correções relativas à versão 1.5 para eliminar erros e resolver problemas de segurança, e o ramo da release 1.4, ao qual são acrescentadas as correções relativas à versão 1.4. Essa última árvore não terá nenhum desenvolvimento ulterior.

Nota: os três ramos recém descritos são os que existem no momento da elaboração desse capítulo. No futuro os números de versão das releases mudarão.

18.1. Obtendo as fontes do sistema e do userland

O sistema de controle de versões CVS não integra as versões 1.4.x e 1.5.x do NetBSD (mas vai fazer parte da versão 1.6) e, portanto, se você ainda não o fez, é necessário instalá-lo.

% pkg_add ftp://ftp.netbsd.org/pub/NetBSD/packages/<OS Ver>/<arch>/All/cvs-1.11nb2.tgz    

Os parâmetros <OS Ver> e <arch> são obtidos com o seguinte comando:

% sysctl kern.osrelease hw.machine_arch    

Para fazer o download das fontes partindo do zero, isto é, sem ter nada no diretório /usr/src:

% setenv CVSROOT :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs login
password: anoncvs
% cvs checkout -rnetbsd-1-5 -PA src
    

Também é possível utilizar ssh, transferindo os dados criptografados:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs checkout -rnetbsd-1-5 -PA src
    

Os comandos precedentes buscam as fontes no ramo relativo à release 1.5. Para fazer o download das fontes correntes basta omitir o parâmetro "-rnetbsd-1-5" do último comando. Para fazer o download do ramo relativo à release 1.4, utiliza-se o parâmetro "-rnetbsd-1-4" na última linha.

Para atualizar uma árvore de fontes já existente, por exemplo para a release 1.5, executar os seguintes comandos:

% setenv CVSROOT :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs login 
password: anoncvs
% cvs -d $CVSROOT update -rnetbsd-1-5 -PAd src
    

ou, com ssh:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs -d $CVSROOT update -rnetbsd-1-5 -PAd src
    

Para atualizar uma árvore das fontes com a versão corrente é necessário omitir o parâmetro "-rnetbsd-1-5". Para atualizar uma árvore das fontes com a release 1.4, utilizar o seguinte parâmetro: "-rnetbsd-1-4".

Para fazer a atualização de uma árvore de fontes que não esteja "limpa" (porque foi feito um "build" de uma parte ou de todas as fontes, ou do próprio kernel) e na qual não foi executado o make cleandir, é necessário executar um make obj no diretório /usr/src:

% makedir /usr/obj
% make obj
    

Agora é possível realizar a atualização com o "cvs update". Ou então pode-se dar um make cleandir no /usr/src antes de usar o CVS. Este método é mais simples e mais veloz quanto ao make dos objectdir quando se deve atualizar uma árvore suja.

A execução é notavelmente mais veloz em comparação com o sup e as atualizações são mais freqüentes.

Não é possível definir com exatidão o tempo necessário para o download de todas as fontes. A título de exemplo, em uma linha T1 a operação exige um pouco mais de uma hora, de acordo com a qualidade da conexão. Para utilizar um modem convém aproveitar-se da compressão dos dados. Por exemplo:

% cvs -z5 checkout ...    

ou

% cvs -z5 -d $CVSROOT update ...    

Nos exemplos precedentes o número 5 indica o nível de compressão desejado. Pode-se especificar um número compreendido entre 1 e 9, onde 1 representa a compressão mais veloz e 9 a mais eficaz, embora mais lenta. Tenha-se presente que a compressão aumenta a carga de trabalho do servidor.

18.2. Obtendo o pkgsrc

Pkgsrc (as fontes do conjunto dos pacotes) compreende um conjunto de utilitários e de arquivos de configuração que permitem compilar e utilizar no NetBSD um alentado grupo de aplicativos, tornando simples a instalação e a desinstalação de softwares no sistema.

Para fazer o download de todo o pkgsrc partindo do zero:

% setenv CVSROOT :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs login 
(the password is: "anoncvs")
% cvs checkout -PA pkgsrc 
    

ou, com ssh:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs checkout -PA pkgsrc
    

Os comandos anteriores criam o diretório pkgsrc no /usr e gravam as fontes do sistema de pacotes inteiro no /usr/pkgsrc

Para atualizar o pkgsrc executar os seguintes comandos:

% setenv CVSROOT :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs login
(the password is: "anoncvs")
% cvs -d $CVSROOT update -PAd pkgsrc
    

ou, com ssh:

% setenv CVS_RSH ssh
% setenv CVSROOT anoncvs@anoncvs.netbsd.org:/cvsroot
% cd /usr
% cvs -d $CVSROOT update -PAd pkgsrc
    

Antes de efetuar a atualização é bom assegurar-se de que o diretório pkgsrc esteja "limpo". Não é seguro dar o comando make clean no /usr/pkgsrc.