Jak buildovat RPM balíčky (1)
RPM je zkratka pro Red Hat Package Manager, což je systém pro práci se softwarovými balíčky. Díky těmto softwarovým balíčkům a díky nástroji, který je spravuje (obvykle má každá distribuce používající RPM balíčky svůj vlastní nástroj pro obsluhu těchto balíčků) můžeme v sytému (Linuxové distribuci) udržet poměrně velký pořádek.
Je dobré se naučit zásadu systém (Linuxovou distribuci používající RPM balíčky) takzvaně "nešpinit" jiným typem balíčků než jsou právě RPM balíčky a navíc určené právě a pouze pro naši distribuci, protože RPM balíčkovacích distribucí dnes existuje poměrně velké množství.
I přesto, že existuje pro každou distribuci (používající RPM balíčky) několik
tisíc RPM balíčků, stále se najde software/program, který máme v oblibě a pro
něhož nemůžeme najít adekvátní RPM balíček. Následující návod je určen právě pro tyto situace. Ano, rychlá kompilace pomocí ./configure && make &&
make install
nebo použití programu checkinstall
je také řešením, ale ne zrovna tím nejsystémovějším.
K čemu je dobré si buildovat vlastní balíčky?
- při správě více počítačů si tímto zcela jistě ušetříme spoustu času
- updaty na novější verze programů budou poměrně snadné
- námi vybuildované balíčky můžeme nabídnout dalším lidem a ušetřit jim práci
- při buildování balíčků se něco naučíme a lépe pochopíme některé souvislosti :-)
Výroba RPM balíčku
Pokud chceme ze zdrojových kódů vybuildovat RPM balíček, tak budeme pořebovat tzv. spec soubor ve kterém je (kromě dalších informativních částí) uvedeno jak dané zdrojové kódy programu přeložit do binární podoby (tedy obvykle pomocí již
výše zmiňované trojkombinace ./configure && make && make install
) a samozřejmě budeme ještě potřebovat překladač a potřebné knihovny (devel balíčky) a hlavičkové soubory pro kompilaci daného programu.
Nastavení buildovacího prostředí
Je dobrým zvykem buildovat balíčky jako normální uživatel a nikoliv jako uživatel root. Proto si nejdříve budeme muset vytvořit pár adresářů ve kterých budeme naši výrobu balíčků provádět.
~/.rpmmacros
:
%packager Ondrej 'o.k' Krejcik %_topdir /home/ondra/rpm
RPM bude při buildování hledat minimálně tyto adresáře:
%{_topdir}/BUILD %{_topdir}/RPMS %{_topdir}/RPMS/i386 %{_topdir}/SOURCES %{_topdir}/SPECS %{_topdir}/SRPMS
a proto je musíme vytvořit:
mkdir -p /home/ondra/rpm/{BUILD,RPMS/i386,SOURCES,SPECS,SRPMS}
Případně vytvoříme v adresáři RPMS
i další podadresáře pro dané
architektury pro které budeme buildovat balíčky (například x86_64
).
Spec soubor
Jako příklad pro vytvoření RPM balíčku použiji program, který se jmenuje conky (protože jsem pro něj nikde nenašel balíček pro distribuci CentOS) a jehož zdrojové kódy lze stáhnout z adresy http://conky.sourceforge.net/.
Spec soubor pro program conky by mohl vypadat následovně:
Summary: A lightweight system monitor Name: conky Version: 1.4.2 Release: 1 License: X11/MIT Group: Applications/System Source0: http://heanet.dl.sourceforge.net/sourceforge/conky/%{name}-%{version}.tar.gz URL: http://conky.sf.net Vendor: The conky development team BuildRoot: %{_tmppath}/%{name}-%{version}-build %description Conky is an advanced, highly configurable system monitor for X. ############################################################### %prep %setup -q %build ./configure make %install %makeinstall %clean rm -rf %{buildroot} %files %defattr(-,root,root) %{_prefix} %doc COPYING AUTHORS README NEWS TODO ChangeLog INSTALL %changelog -n %{name} * Wed Sep 6 2006 - o.k. - Initial RPM release for CentOS 4.4
Tento soubor uložíme do adresáře /home/ondra/rpm/SPECS
a nazveme
jej conky.spec
.
Do adresáře /home/ondra/rpm/SOURCES
uložíme zdrojové kódy námi
překládaného programu, tedy například soubor conky-1.4.2.tar.gz
.
Tímto máme vše připraveno a můžeme přejít k vlastnímu vytvoření balíčku.
Vlastní buildování
Vytvoření balíčku (jak binárního, tak zdrojového) se provádí pomocí
příkazu rpmbuild
(je součástí balíčku rpm-build
) s následujícími parametry:
rpmbuild -ba ~/rpm/SPECS/conky.spec
Výsledek
Zdrojový balíček nalezneme v adresáři
/home/ondra/rpm/SRPMS/conky-1.4.2-1.src.rpm
a vlastní binární
balíček nalezneme v adresáři
/home/ondra/rpm/RPMS/i386/conky-1.4.2-1.i386.rpm
.
Daný balíček poté již můžeme nainstalovat (jako root) klasicky pomocí příkazu:
rpm -Uvh /home/ondra/rpm/RPMS/i386/conky-1.4.2-1.i386.rpm
Závěr
Toto byl jen základní příklad buildování balíčku, v dalších částech si rozebereme některé důležité věci jako jsou GPG podpisy balíčků, rozebereme si podrobněji spec soubor, patche, pre a postinstalační skripty a další věci.