Budowanie pakietu. Krótki opis jak to zrobić oraz jak zbudować własne lokalne lub zdalne repozytorium.
1. Jeśli prawidłowo został zbudowany PKGBUILD, wszystko jest gotowe do budowy pakietu. W katalogu z plikiem PKGBUILD wykonujemy polecenie:
make_nnd_pkg
2. Po wydaniu polecenia make_nnd_pkg źródła zostaną pobrane z lokalnego cache (z intenetu zostały pobrane podczas generowania sum kontrolnych), sprawdzone zostaną sumy kontrolne plików, źródła zostaną rozpakowane. Następnie zostanie wywołana funkcja build() kompilująca i instalująca program w katalogu tymczasowym. Jeśli ustawiliśmy zmienną pre_packing=yes to po funkcji build(), kilku funkcji wewnętrznych zostaje wykonana funkcja pre_packing(). Jeśli wszystko poszło prawidłowo to po skompilowaniu zostaniemy zapytani o to czy chcemy wprowadzić poprawki do automatycznego podziału pakietów. Odpowiadamy 'T’, sprawdzamy czy wszystko jest na swoim miejscu, wciskamy F10 aby wyjść z Midnight Commandera, skrypt kończy budować pakiet. Znów jesteśmy w katalogu z plikiem PKGBUILD, ale plików mamy już nieco więcej – mamy, przede wszystkim, pakiet (oraz pakiet-devel i pakiet-man, jeśli takowe zostały stworzone), mamy pliki filelist-* zawierające listy plików w każdym ze zbudowanych pakietów, mamy katalogi 'src’, 'pkg’, 'dev_pkg’, 'man_pkg’. Usuwamy wszystko poza tym co mieliśmy przed rozpoczęciem budowy pakietu. Można (a nawet powinno się) ostateczną budowę pakietu wykonać poleceniem:
make_nnd_pkg -cw /jakiś_katalog
spowoduje to, że wszystkie tymczasowe pliki zostaną usunięte automatycznie, a pakiety zostaną zapisane w katalogu /jakiś_katalog. Warto sobie taki katalog dla pakietów stworzyć…
3. Jeśli pakiet budowaliśmy jednym z podkatalogów drzewka cvs (NIE ZALECANE!!) to wykonujemy update i commit wprowadzonych zmian, następnie wychodzimy z naszego dotychczasowego katalogu do katalogu nadrzędnego, wchodzimy kolejno do katalogów *-devel i *-man (o ile istnieją) i w każdym z nich wykonujemy cvs update i commit. Jeśli budowaliśmy pakiet w katalogu tymczasowym to najpierw uaktualniamy pliki w odpowiednim katalogu dzewa cvs, a następnie robimy cvs update i commit.
4. Dla tych, którzy nie chcą/potrafią bawić się cvs (badź nie mają dostępu do cvs):
Tworzymy katalog tymczasowy nazywający się tak jak pakiet, kopiujemy do niego katalogi: pakiet, pakiet-devel, pakiet-man, oraz odpowiednie pliki pakietów. Tymczasowy katalog kompresujemy i wysyłamy do kogoś, kto wrzuci nam wszystko do cvs, wygeneruje bazy pakietów i zrobi update repozytorium.
5. Budowanie repozytorium lokalnego:
Mamy katalog (nazwijmy go np. lokalne) zawierający podkatalogi z plikami PKGBUILD i innymi niezbędnymi do budowy pakietów i drugi, zawierający zbudowany przez nas pakiety. Generujemy bazę danych pakietów poleceniem:
gensync /sciezka/lokalne /katalog/z/pakietami/lokalne.db.tar.gz
po chwili mamy w katalogu z pakietami bazę danych naszych lokalnych pakietów. Możemy teraz do pacman.conf dodać linie:
[lokalne]
Server = file:///scieżka/do/katalogu/z/pakietami
Od tej chwili pacman będzie synchronizował pakiety również z tym katalogiem.
6. Budowa repozytorium zdalnego przebiega tak samo. Jeśli chcemy robić samodzielnie update oficjalnych repozytoriów to niezbędne jest posiadanie na dysku WSZYSTKICH pakietów z repozytorium. Genereujemy bazę pakietów, a następnie podmieniamy/dodajemy/usuwamy odpowiednie pliki na serwerze.
Michał Lechański (Mis’)