====== 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?rev=HEAD|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'': $ 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 [[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: $ 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 [[http://cvs.pld-linux.org/cgi-bin/cvsweb/PLD-doc/devel-hints-pl.txt?rev=HEAD|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|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|rc-skryptów]]