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