This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
pl:developingpld:addnewspec [2010-01-22 05:16] SamChi - refer to latest revision |
pl:developingpld:addnewspec [2010-01-22 14:37] qwiat more cosmetics |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | |||
- | |||
- | ====== Dodanie nowego speca ====== | ||
- | Zanim zaczniemy pisanie speca koniecznie należy zapoznać się ze [[http://cvs.pld-linux.org/cgi-bin/cvsweb/PLD-doc/devel-hints-pl.txt|wskazówkami dla dewelopera w devel-hints-pl.txt]]. Zakładam, że przygotowaliśmy już [[:pl:DevelopingPLD:PreparingWorkingEnvironment|środowisko budowania]] pakietów i mamy dostęp do [[:pl:Repositories|CVS-u]] do zapisu. Przechodzimy do katalogu ''packages'': | ||
- | |||
- | |||
- | |||
- | <file>$ cd ~/rpm/packages | ||
- | </file> | ||
- | tworzymy katalog o unikalnej nazwie (wg. zasad w devel-hints-pl.txt), jednoznacznie określające nazwę aplikacji: | ||
- | |||
- | |||
- | |||
- | <file>$ mkdir foo | ||
- | </file> | ||
- | |||
- | |||
- | ===== Tworzenie speca ===== | ||
- | Nic nie stoi na przeszkodzie by stworzyć speca od podstaw, lepiej jednak, zwłaszcza dla początkujących użyć jeden z [[http://cvs.pld-linux.org/cgi-bin/cvsweb/template-specs/|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: | ||
- | |||
- | |||
- | |||
- | <file>$ cd foo | ||
- | $ vim foo.spec | ||
- | </file> | ||
- | Kiedy nasz spec nabrał wstępnego kształtu, robimy testowy build: | ||
- | |||
- | |||
- | |||
- | <file>$ builder -bb -ncs foo | ||
- | </file> | ||
- | 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//: | ||
- | |||
- | |||
- | |||
- | <file>$ ../adapter foo.spec | ||
- | </file> | ||
- | skrypt pozwoli dostosować speca do reguł panujących w PLD. W tym momencie możemy dodać speca do CVS-u (oraz ewentualne łatki): | ||
- | |||
- | |||
- | |||
- | <file>$ cd ~/rpm/packages | ||
- | $ cvs add foo | ||
- | $ cd foo | ||
- | $ cvs add foo.spec | ||
- | $ cvs ci | ||
- | </file> | ||
- | |||
- | |||
- | ===== 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: | ||
- | |||
- | |||
- | <file>$rpm --showrc | ||
- | </file> | ||
- | |||
- | * generalnie nie powinny zostać żadne niespaczkowane pliki, są jednak wyjątki od tej zasady, np. pliki przeznaczone dla specyficznych dystrybucji. | ||
- | Kompletne zestawienie reguł można znaleźć w dokumencie [[http://cvs.pld-linux.org/cgi-bin/cvsweb/PLD-doc/devel-hints-pl.txt|devel-hints-pl.txt]]. | ||
- | |||
- | |||
- | |||
- | ===== Linki ===== | ||
- | |||
- | * Oficjalna [[http://rpm.org/wiki/Docs#PackagerDocumentation|dokumentacja paczkowania]] | ||
- | * Zestawienie: [[http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/PLD-doc/uid_gid.db.txt?rev=HEAD;content-type=text%2Fplain|UID-ów i GID-ów]] w PLD | ||
- | * Priorytety startu dla [[http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/PLD-doc/rc-scripts.db.txt?rev=HEAD;content-type=text%2Fplain|rc-skryptów]] | ||