Como configuro o acesso ao repositório?

Só exite um repositório para compiladores e está em compiladores.rnl.ist.utl.pt no directório /cvs.

A variavel CVSROOT deve ser definida de uma das seguintes formas:

  • /cvs (quando o acesso for feito do mega)
  • :ext:<user>@compiladores.rnl.ist.utl.pt:/cvs (acesso remoto). Neste caso, pode ser necessário definir também a variável de ambiente CVS_RSH, cujo valor deverá ser o programa que se pretende usar para efectuar a ligação ao servidor (ex.: 'export CVS_RSH=ssh' ou 'setenv CVS_RSH ssh')
No caso do acesso ser feito por ssh, é possível configurar a ligação de forma a que não seja pedida uma password sempre que se executa um comando cvs na máquina cliente. Tal procedimento, é opcional e é descrito em seguida.

É necessário executar 'cvs init'?

Não! O repositório já está inicializado e é único: está em /cvs.
Não está em /cvs/NNN; isto é a localização do módulo NNN dentro do repositório /cvs.

Como resolvo locks no CVS?

Fazer login no servidor e procurar no directório /cvs/NNN (onde NNN é o número de grupo) por possiveis ficheiros de lock: remover esses ficheiros.

Exemplo: find /cvs/NNN -name #\*

Os ficheiros nestas condições podem normalmente ser removidos em segurança desde que nenhum elemento do grupo esteja a operar com o cvs. Estas situações tendem a ocorrer quando uma operação de cvs é abortada.

NOTA: É necessário cuidado, pois os outros ficheiros dentro de /cvs/NNN são os ficheiros do projecto sob o controlo de versões.

Posso fazer login no mega sem usar password?

Sim. A solução consiste em usar o mecanismo de autenticação por chave pública. Este mecanismo é ainda mais seguro que o uso de password pois evita que a password seja enviada na ligação. Embora por ssh esta já seja transmitida cifrada, com o mecanismo de autenticação por chave pública a password nem sequer é transmitida. Deixamos a explicação do funcionamento deste mecanismo para outras disciplinas ;)

No caso da cadeira de compiladores, o interesse de fazer login sem usar password, é o de poder executar os comandos cvs numa máquina cliente sem estar sempre a introduzir a password a cada comando. Vamos ao procedimento, supondo que nos pretendemos ligar à máquina A a partir da máquina B sem password (usando o ssh):

  1. Gerar um par de ficheiros <Chave pública, Chave privada>:
    ssh-keygen -t rsa -b 2048
    Aceitar a proposta de omissão para guardar os ficheiros (em $HOME/.ssh) e deixar a passphrase vazia.
  2. Colocar a chave pública na máquina A dentro do ficheiro $HOME/.ssh/authorized_keys.
    ex. cat id_rsa.pub >> $HOME/.ssh/authorized_keys
  3. Colocar a chave privada no directório $HOME/.ssh da máquina B (*);
  4. testar a ligação:
    ssh @A
    Neste momento é suposto o login em A ser feito automaticamente.

(*) MUITA ATENÇÃO! a chave privada permite o acesso imediato à máquina A sem password! Devem ter muito cuidado com os sítios onde guardam este ficheiro. Em particular se trabalharem num computador de acesso a muitos utilizadores (caso da RNL) NUNCA deixem lá ficar a vossa chave privada, sob pena de estarem a oferecer acesso livre à vossa área a quem apanhar tal ficheiro. Mesmo quando guardado num local seguro, deve ser protegido contra acessos de terceiros:
chmod 600 id_rsa

Mais info: man ssh-keygen