I ports di crux-it sono divisi per "collezioni tematiche" (ad esempio come avviene nei sistemi
BSD), le collezioni tematiche sono:
devel/ gnome/ multimedia/ office/ system/ games/ kde/ network/ science/ x11/
ogni collezione è un modulo sul cvs,
quindi la divisione in collezioni non avviene per tag ma per moduli ("directory").
I moduli hanno gli stessi nomi delle collezioni.
I tag vengono usati per specificare a quale architettura e versione di crux sono
destinati i ports: i tag sono del tipo architettura-versione (esempio i686-2_0
PPC-2_0).
Per evitare di dover digitare la propria password ogni qual volta si acceda al cvs
e' necessario esportarla nella propria /home/~ del server cvs.
Per prima cosa generiamo le chiavi ssh (senza immettere passphrase):
ssh-keygen -t rsa -f ~/.ssh/id_rsa
poi si potrà esportare la propria chiave pubblica come authorizad_keys nella propria
home del server cvs .
Si crei ~/.ssh su khazad-dum.orson.it e poi si copi la chiave con:
cat ~/.ssh/id_rsa.pub | ssh khazad-dum.orson.it 'cat - >> ~/.ssh/authorized_keys'
L'accesso al CVS di crux-it avviene tramite ssh, quindi bisogna settare in modo
corretto la variabile CVS_RSH (di solito basta che contenga il valore
ssh). 'E possibile settare il valore di questa variabile prima di cominciare
la sessione di lavoro con CVS, o più comodamente si può fare in modo
che venga settata automaticamente all'avvio di bash (se si sta usando bash),
aggiungendo, ad esempio, in ~/.bashrc la riga:
export CVS_RSH='ssh'
Prima di poter apportare modifiche ai ports, è necessario ottenere il tree
aggiornato. È possibile mettere il tree in qualsiasi posto del proprio
filesystem (è comodo eseguire il checkout sempre nella stessa dir), ad
esempio si può mettere in $HOME/crux-it ; quindi bisogna eseguire i
seguenti comandi:
cd $HOME/crux-it/cvs
cvs -d username@khazad-dum.orson.it:/home/cvs co modulo
Ovviamente è necessario sostituire "username", col proprio username e "modulo" con
il modulo (la collezione) su cui si deve lavorare.
Prima di aggiungere un nuovo port bisogna decidere in quale collezione inserirlo,
quindi eseguire il checkout del modulo, raggiungere la directory che
contiene il modulo, ed eseguire i seguenti comandi (nell'esempio il nuovo port per x86 che si
vuole aggiungere si chiama "anarchia" e si trova nella dir $HOME/ports , e verrà
aggiunto al modulo "utopie"):
cd $HOME/crux-it
cvs co utopie
cd utopie
cp -r $HOME/ports/anarchia .
cvs add anarchia
cd anarchia
cvs add Pkgfile .footprint .md5sum
cvs commit -m "anarchia: Initial release"
cvs tag i686-2_0
Se il port ha qualche altro file, come ad esempio un README, una patch od uno script
post-install (o pre-install) bisogna aggiungere anche quelli, è importante
non aggiungere i sorgenti che invece devono essere scaricati dai relativi siti, o altri
file che si trovano nella dir del port ma che non fanno parte del port.
Bisogna commentare il commit in modo che anche gli altri maintainers possano intuire
velocemente le modifiche fatte ai ports, il commento deve contenere il nome del
port modificato (o aggiunto), e le operazioni compiute su di esso.
Per modificare un port, dopo il checkout bisogna raggiungere la dir che contiene il
port, in questo caso $HOME/crux-it/utopie/anarchia , fare le dovute modifiche,
eseguire il commit dei cambiamenti e muovere il tag in modo che punti all'ultima versione:
cd $HOME/crux-it/utopie/anarchia
(dovute modifiche)
cvs commit -m "anarchia: descrizione delle modifiche"
cvs tag -c -F i686-2_0
Per rimuovere un port si deve rimuovere il tag, quindi usare "cvs delete" per
cancellarlo definitivamente:
cd $HOME/crux-it/utopie/anarchia
cvs tag -d i686-2_0
cd ..
cvs delete -R -f anarchia
cvs commit -m "anarchia: cancellato"
cvs update -P
Per rimuovere un singolo file da un port (ad esempio una patch che non serve
più), bisogna eseguire alcuni comandi, come cancellare il tag dal file,
cancellare il file dal cvs e fare il commit:
cd $HOME/crux-it/utopie/anarchia
cvs tag -d i686-2_0 anarchia-1.0.patch
cvs delete -f anarchia-1.0.patch
cvs commit -m "anarchia: cancellato anarchia-1.0.patch"
Per spostare un port da una collezione ad un'altra bisogna cancellare il port dalla
collezione precedente e aggiungerlo nella nuova, ad esempio:
cd $HOME/crux-it/utopie/anarchia
cvs tag -d i686-2_0
cd ..
cvs delete -R -f anarchia
cvs commit -m "anarchia: cancellato"
cvs update -P
cvs co possibilita
cd possibilita
cp -r $HOME/ports/anarchia .
cvs add anarchia
cd anarchia
cvs add Pkgfile .footprint .md5sum
cvs commit -m "anarchia: spostato da utopie in possibilita"
cvs tag i686-2_0