PLDWWW: pl/DevelopingPLD/AddNewSpec

qwiat qwiat at pld-linux.org
Fri Jan 22 01:58:00 CET 2010


Author: qwiat   Date: Fri Jan 22 00:58:00 2010 GMT
Module: PLDWWW   URL: http://www.pld-linux.org/pl/DevelopingPLD/AddNewSpec
---- Log message:


---- Page affected: pl/DevelopingPLD/AddNewSpec

---- Diffs:

================================================================
New page:
= 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ż [wiki:pl/DevelopingPLD/PreparingWorkingEnvironment środowisko budowania] pakietów i mamy dostęp do [wiki: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 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=1.302;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=1.98;content-type=text%2Fplain rc-skryptów] 


More information about the pld-cvs-commit mailing list