Krótka i zgrubna instrukcja budowania pakietów z CVSa.

napisana przez osobę, której wystarczy, że zadziałała raz

Wstęp

Repozytoria naszej dystrybucji zawierają tysiące paczek, pozwalających zainstalować najpopularniejsze, najważniejsze oprogramowanie. Każda paczka, którą pobierasz, jest skompresowaną wersją programu. Jednak, jak mawiają deweloperzy i administratorzy PLD - „Dyski nie są z gumy”. Nie posiadamy i nigdy nie będziemy posiadać przestrzeni dyskowej, pozwalającej pomieścić wszystkie aplikacje w repozytoriach PLD. Jest to nierealne. Dlatego też, część mniej popularnych programów oraz takich, które zajmują dużo miejsca na dyskach serwerów znajdziesz na CVS. Lista wszystkich pakietów jest dostępna na długo ładującej się stronie.

W tym przewodniku poprowadzimy Ciebie za rączkę by pokazać, jak prosto można zbudować swoje ulubione programy.

Wiedza

Jeśli pragniesz prawdziwej wiedzy zobacz Opis skryptu builder i Przygotowanie środowiska pracy.

Przygotowanie

Punkty te wykonujemy tylko raz:

  • zainstaluj narzędzia do budowania (jest to jedyna operacja, która wymaga uprawnień superużytkownika - roota)
  poldek -i rpm-build rpm-build-tools cvs
  • przygotuj środowisko dla buildera

Sprowadza się to do wykonania polecenia:

  builder --init-rpm-dir

Ważne: Tę operację powinieneś wykonać gdy Twój komputer jest podłączony do internetu. Program builder stworzy w tym momencie odpowiednią strukturę katalogów i pobierze najaktualniejsze pliki, potrzebne do jego działania. W wyniku wykonania powyższego polecenia powinieneś ujrzeć:

  $ builder --init-rpm-dir
  Initialising rpm directories to /home/users/dirdival/rpm from :pserver:cvs@cvs.pld-linux.org:/cvsroot
  U packages/.cvsignore
  U packages/rpm.groups
  U packages/dropin
  U packages/mirrors
  U packages/md5
  U packages/adapter
  U packages/adapter.awk
  U packages/fetchsrc_request
  U packages/builder
  U packages/relup.sh
  U packages/compile.sh
  U packages/repackage.sh
  To checkout *all* .spec files (read-only):
  - run cvs co SPECS
  To checkout *all* packages:
  - run cvs up in /home/users/dirdival/rpm/packages dir
  
  To commit with your developer account:
  - edit /home/users/dirdival/rpm/packages/CVS/Root

Voila! To wszystko. Dla pewności możemy upewnić się, czy odpowiednie pliki i katalogi znajdują się tam gdzie trzeba. Wystarczy zajrzeć do ~/rpm:

  $ cd ~/rpm
  $ ls
  BUILD  packages  RPMS  SRPMS

Warto jeszcze sprawdzić czy skrypt builder ustawił zmienną CVSROOT:

  $ echo $CVSROOT
  :pserver:cvs@cvs.pld-linux.org:/cvsroot

Jeśli na konsoli nie zobaczysz powyższej linijki, będziesz musiał ustawić tą zmienną środowiskową sam. Jeśli korzystasz z basha, wystarczy dopisać na końcu pliku .bashrc poniższą linijkę:

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

i przelogować użytkownika.

Budowanie pakietów

W końcu klucz programu, czyli budowanie pakietów. Tutaj znajduje się cała magia specy. Wystarczy wywołać polecenie:

  builder <nazwa programu>

Na przykład:

  builder celestia

Tak, to wszystko! Budowniczy za Ciebie pobierze źródła aplikacji, sprawdzi czy są zainstalowane wszystkie wymagane pakiety i przystąpi do pracy. Jeśli wszystko pójdzie zgodnie z planem, paczka zostanie utworzona i trafi do katalogu: ~/rpm/RPMS. Wystarczy wtedy uruchomić poldka i ją zainstalować.

Przy budowie niektórych aplikacji możemy natrafić na tak zwane flagi, czyli dodatkowe parametry budowania. Pozwalają one na większą kontrolę nad tym co chcemy uzyskać. Wyświetlane są one przez skrypt builder na samym początku. Jeśli chcesz się nimi posłużyć wciśnij Ctrl-C, aby przerwać budowanie i uruchom budowniczego z wybranymi parametrami. Najlepiej omówić je na przykładzie:

  $ builder celestia
  builder: SMP make flags are set to -j4
  # $Revision: 1.71 $, $Date: 2008/09/02 19:37:50 $
  
  No conditional flags passed
  
  from available:
  --with   :	 glut gnome gtk
  --without:	 kde theora
  
  Available branches: AC-branch RA-branch
  ^C

Jak widać mamy dostępne dwa rodzaje flag –with i –without. Pierwszy z nich mówi, co dodatkowego dla pakietu możemy zrobić. Druga grupa odwrotnie, możemy za ich pomocą powiedzieć, że czegoś nie chcemy. Na przykład:

  $ builder --with gnome --with gtk --without kde celestia

Będzie to oznaczało, że chcemy zbudować paczkę celestia ze wsparciem dla gnome a nie chcemy wsparcia dla środowiska kde.

Możemy podawać wiele parametrów budowania w dowolnej kolejności. Po ich ustawieniu skrypt builder poinformuje nas, że je wykrył, otaczając wybrane flagi ostrymi nawiasami:

  $ builder --with gnome  --without kde celestia
  builder: SMP make flags are set to -j4
  # $Revision: 1.71 $, $Date: 2008/09/02 19:37:50 $
  
  Building celestia.spec with the following conditional flags:
   --with gnome  --without kde
  
  from available:
  --with   :	 glut <gnome> gtk
  --without:	 <kde> theora

Jeśli nie jesteś pewien za co odpowiadają poszczególne flagi, możesz zajrzeć do pliku spec. Na jego początku powinny znajdować się wszystkie możliwe parametry budowania oraz krótka informacja o każdym z nich. Plik spec znajdziesz w katalogu:

  ~/rpm/packages/nazwaprogramu/nazwaprogramu.spec

czyli w tym konkretnym przypadku jest to:

  ~/rpm/packages/celestia/celestia.spec

Co może pójść nie tak?

Deweloperzy PLD dokładają wszelkich starań by spece, służące do budowania pakietów, były dobrze napisane i pozwalały automatycznie tworzyć pakiety. Ta drobiazgowość dotyczy również wymagań jakie nasz system musi spełnić by móc zbudować wybrany program. Dlatego, jeśli nie uda Ci się utworzyć pakietu, najprawdopodobniej przyczyną tego będzie brak wymaganej paczki w Twoim systemie. Objawia się to w taki sposób:

  $ builder geany
  builder: SMP make flags are set to -j4
  M geany/geany.spec
  # $Revision: 1.30 $, $Date: 2009/08/17 04:11:43 $
  Available branches: AC-branch
  geany-0.18.tar.bz2 having proper md5sum already exists
  błąd: Niespełnione zależności budowania:
  	vte-devel jest wymagany przez geany-0.18-1.src
  Error: package build failed. (no more info)

Skrypt builder poinformował nas, że do budowy edytora geany wymagane jest zainstalowanie paczki: vte-devel. Musimy teraz wejść do poldka i zainstalować niezbędny pakiet. Paczki zawierające w nazwie słowo devel posiadają najczęściej biblioteki i pliki nagłówkowe (nie przejmuj się jeśli nie rozumiesz - to informacja dla programistów). Po zbudowaniu naszego edytora będzie można je usunąć, bądź pozostawić na przyszłość. Wiele programów korzysta z tych samych bibliotek przy budowaniu i na ogół nie zajmują dużo miejsca na dysku.

Jeśli podczas budowy paczki przytrafi się Tobie inny błąd, niedotyczący zależności, powinieneś zgłosić go deweloperom. Możesz to uczynić wysyłając ostatnie kilkanaście linii skryptu buildera na: listę deweloperów PLD, bądź na Forum PLD.

Warto wiedzieć, że ...

Wszystkie pakiety z repozytoriów PLD powstają w wyżej opisany sposób. Jeśli komuś bardzo zależy na jak najnowszych wersjach newralgicznych części systemu (jądrze systemu, głównych usługach w których wykryto poważne błędy), warto samemu budować odpowiednie paczki. Na ogół mija trochę czasu (kilka dni) nim nowe wersje trafią do głównych repozytoriów.

W tym miejscu warto przypomnieć, że można zgłosić, w prosty sposób, zbudowanie jakiejś paczki za pomocą bota stbr. Szczegółowy opis jak to zrobić znajduje się w przewodniku stbr - droga by wybrana paczka znalazła się w repo.

Na koniec wypada wspomnieć, że wspomniany CVS, z którego pobierane są spece, to zwykły publiczny CVS z prawami do odczytu. Dlatego można pracować na nim jak na zwykłym systemie kontroli wersji. Ale to już inna bajka.

pl/przewodniki/budowanie-z-cvs.txt · ostatnio zmienione: 2010/11/14 00:25 przez dirdival
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0 Powered by Lighttpd - fly light