[ baseciq.org ]

Slack2PLD

[...]

CVS - mieć wszystko najświeższe

Repozytorium CVS w PLD służy do pracy nad pakietami. W większości wypadków materiały tam zawarte to wersje testowe nad którymi właśnie ktoś pracuje, więc istnieje bardzo duże prawdopodobieństwo iż kompilacja się nie powiedzie albo dany pakiet nie będzie spełniał waszych oczekiwań. Często także na skargę "coś mi nie działa" któryś z developerów może wam odpowiedzieć "ściągnij z cvs'a najnowszą wersję". Oczywiście jest możliwość ściągnięcia stabilnej wersji także z CVS ale nie widzę takiej potrzeby skoro jest to już w katalogu pool na ftp.

Na początek trzeba określić adres repozytorium:

export CVSROOT=":pserver:cvs@cvs.pld-linux.org:/cvsroot"

Później tworzymy odpowiednie katalogi dla rpm'a w których będziemy pracować:

mkdir -p ~/rpm/{SPECS,SOURCES,RPMS,SRPMS,BUILD}

Teraz trzeba przygotować lokalne repozytorium. Nie wnikajcie co to jest, poprostu wykonajcie następujące czynnośći ;-):

lukasz@serv:~$ cd rpm/
lukasz@serv:~/rpm$ cvs get SPECS/builder SPECS/getsrc SOURCES/kernel-i386.config
U SPECS/builder
U SPECS/getsrc
U SOURCES/kernel-i386.config

Builder jest skryptem wspomagającym budowanie pakietów oraz ściąganie źródeł. Getsrc to skrypt pozwalający na ściągnięcie wszystkich źródeł potrzebnych przez danego specfile'a. Natomiast kernel-i386.config zaciągneliśmy po to, by w katalogu SOURCES cvs utworzył wszystkie potrzebne sobie pliki. Załóżmy że chcemy sobie zbudować teraz pakiet z ekg - klientem gadu-gadu pod konsolę:

lukasz@serv:~/rpm$ cvs get SPECS/ekg.spec
U SPECS/ekg.spec
lukasz@serv:~/rpm$ cd SPECS/
lukasz@serv:~/rpm/SPECS$ ./getsrc ekg.spec
Trying to download sources for ekg-20020629-1
Searching for file: ekg-20020629.tar.gz
        Trying CVS...                                                 OK
Download opreation completed: all files retrieved successfully

Pozostaje rpm -ba ekg.spec i za jakiś czas mamy utworzony pakiet. Jeżeli chcelibyśmy wykonać wszystkie czynności naraz, możemy użyć buildera, który nawet nie wymaga posiadania specfile'a na dysku ;-):

lukasz@serv:~/rpm/SPECS$ ./builder ekg.spec
U ekg.spec
# $Revision: 1.2 $, $Date: 2003/06/02 22:22:41 $
U ekg-20020629.tar.gz
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.32838

... tutaj następuje faza budowania pakietu ...

Zapisano: /home/users/lukasz/rpm/SRPMS/ekg-20020629-1.src.rpm
Zapisano: /home/users/lukasz/rpm/RPMS/ekg-20020629-1.i586.rpm
Zapisano: /home/users/lukasz/rpm/RPMS/libgadu-20020629-1.i586.rpm
Zapisano: /home/users/lukasz/rpm/RPMS/libgadu-devel-20020629-1.i586.rpm
Zapisano: /home/users/lukasz/rpm/RPMS/libgadu-static-20020629-1.i586.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.10772
+ umask 022
+ cd /home/users/lukasz/rpm/BUILD
+ _autoreqprov=n
+ [ n = y ]
+ cd ekg-20020629
+ rm -rf /tmp/ekg-20020629-root-lukasz
+ exit 0

... and voila, pakiety zbudowane leżą sobie w /home/users/lukasz/rpm/RPMS.