Table of Contents
Dodanie nowego speca
Zanim zaczniemy pisanie speca koniecznie należy zapoznać się ze wskazówkami dla dewelopera w devel-hints-pl.txt. Zakładam, że przygotowaliśmy już środowisko budowania pakietów i mamy dostęp do CVS-u do zapisu. Przechodzimy do katalogu packages
:
$ cd ~/rpm/packages
tworzymy katalog o unikalnej nazwie (wg. zasad w devel-hints-pl.txt), jednoznacznie określające nazwę aplikacji:
$ mkdir foo
Tworzenie speca
Nic nie stoi na przeszkodzie by stworzyć speca od podstaw, lepiej jednak, zwłaszcza dla początkujących użyć jeden z dostępnych w CVS-ie szablonów. Plik spec musi mieć nazwę zgodną z nazwą katalogu (o którym powyżej). Zaczynamy edycję speca za pomocą dowolnego edytora:
$ cd foo $ vim foo.spec
Kiedy nasz spec nabrał wstępnego kształtu, robimy testowy build:
$ builder -bb -ncs foo
Niemal na pewno pojawią się jakieś błędy (zwłaszcza u początkujących), dlatego teraz praca polega na poprawianiu błędów i kolejnych testowych buildach.
Prace końcowe i dodanie speca do CVS-u
Kiedy pakiet się buduje próbujemy go zainstalować, uruchomić i odinstalować. W takich momentach często wychodzą błędy w zależnościach ( Requires
) i skryptach (%pre
, %post
, %preun
, %postun
). Kiedy wszystko wygląda w porządku, to koniecznie uruchamiamy adapter:
$ ../adapter foo.spec
skrypt pozwoli dostosować speca do reguł panujących w PLD. W tym momencie możemy dodać speca do CVS-u (oraz ewentualne łatki):
$ cd ~/rpm/packages $ cvs add foo $ cd foo $ cvs add foo.spec $ cvs ci
Wskazówki
- pakiet musi się budować z poziomu zwykłego użytkownika
- ostrożnie nadajemy uprawnienia w sekcji
%files
, unikamy jak ognia SUID, jeśli to absolutnie konieczne, używaj SGID i osobnej grupy. - nie musimy się biedzić z makrami RPM-a, zwłaszcza w sekcji
%files
, adapter ustawi je za nas. - lista makr RPM:
$rpm --showrc
- generalnie nie powinny zostać żadne niespaczkowane pliki, są jednak wyjątki od tej zasady, np. pliki przeznaczone dla innych dystrybucji.
Kompletne zestawienie reguł można znaleźć w dokumencie devel-hints-pl.txt.
Linki
- Oficjalna dokumentacja paczkowania
- Zestawienie: UID-ów i GID-ów w PLD
- Priorytety startu dla rc-skryptów