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] 
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to