WWW.CYRON.CZ

Vše pro Váš Mageia Linux

Vytvoření vlastního RPM balíčku 1 - základy, hlavička SPEC souboru


Mnozí z Vás by si rádi vyráběli vlastní RPM balíčky (nejnovější verze software, programy co v úložištích nejsou, zabalení sad ikon, atd). Tento seriál Vás tohle naučí. Není to tak složité, ale také ne příliš snadné, každopádně tomu budete muset věnovat čas.

V této sérii článků se nebudu příliš věnovat teorii, ale spíše praktickým příkladům, k pochopení teorie doporučuji prostudovat vynikající seriál Rukověť baliče RPM. Vhodná je alespoň částečná znalost BASHe. Pouze v prvních dvou dílech se teorie zlehka dotknu, ale pouze zjednodušeně v míře nezbytně nutné. Spíše se chci s Vámi podělit o postupy, které při tvorbě RPM balíčků sám používám. Ale upozorňuji, uvedu jen základní věci, které ovšem často postačí.


Je nutno mít v systému minimálně tyto balíčky: rpm-rebuilder, cmake, flex, bison, gcc3.3-g77, tcsh, imake. Ještě dodám, že ke tvorbě RPM doporučuji zvláštní diskový oddíl s instalací Mandriva Linuxu - není to podminkou, ale je to lepší.


Až na 3. díl budeme pracovat se souborem .spec (dále SPEC) a zdrojovými soubory. Souboru SPEC se věnuje právě seriál Rukověť baliče RPM. Doporučuji rozbalit několik SRC.RPM a prostudovat je, hlavně tedy obsah souboru SPEC. Jak SRC.RPM či RPM rozbalit? Dokáže to například File Roller, který je v GNOME integrován do kontextového menu myši (Ark z KDE nikoliv) nebo textový cpio.

rpm2cpio můjrpm.rpm | cpio -idmv

V prvních dvou dílech se budu věnovat základnímu popisu SPEC souboru. Co že to je? Nejdůležitější soubor potřebný k výrobě binárního RPM. Obsahuje jednak informace o budoucím RPM balíčku (název, verze, aj), druhak instrukce k jeho výrobě. Jednoduchý SPEC soubor může vypadat nějak takto:


%define distsuffix označení_autora

# Libovolný řetězec, v názvu balíčku nahradí obligátní mdv (volitelné).

%define packager Jméno Baliče <emajl@balice>

# Volitelné.

%define name		název
%define version		verze
%define release		%mkrel 1

# Zastavme se u posledního řádku. Makra (začínají znakem %) bývají často předdefinovány. Třeba zrovna makro %mkrel 1 přidá do názvu balíčku typicky 1mdv. Ta číslovka značí verzi balíčku (ne verzi zabaleného programu). Pomocí %define je možné nadefinovat vlastní.

Name:		%{name}
Version:	%{version}
Release:	%{release}

# Tato část hlavičky přebírá hodnoty definované výše. Je možno doplnit, nebo uvést až zde.

Summary:	krátký popis
License:	např. GNU/GPL
Group:		skupina

# Skupina - každý balíček patří do nějaké skupiny (Sound, Video, Games, aj).

Source:		%{name}-%{version}.tar.gz

# Jméno hlavního zdrojového archívu. Často se jmenuje právě dle tohoto schématu, ale klidně i úplně jinak. :-) Zde vidíte užitečnost předdefinovaných proměnných (maker) - hodnoty uvedete jen jednou.

URL:		adresa

# Webová adresa programu. Slouží hlavně pro baliče.

Requires:	závislosti výsledného RPM

# O knihovny se starat nemusíte, ty se zapíší automaticky. Zde uveďte jen závislosti jiného typu, jako mplayer či super-ikony.

BuildRequires:	kompilační závislosti

# Tyto vlastně nemusíte uvádět vůbec, ale pokud je uvedete, výsledný zdrojový (SRC.RPM) je bude při své instalaci vyžadovat, což oceníte při rebuildu na jiném systému. Pokud hodláte SRC.RPM umístit na web, je to prakticky nutnost. Zapisují se zde méněběžné kompilační nástroje (bison, cmake...) a hlavně *-devel balíčky, nutné pro kompilaci. Problém bývá s *-devel knihovnami. Pokud napíšete libXY-devel, nebude to funkční na 64 bitech. Občas je možno napsat XY-devel.

Provides:	co poskytuje

# Opak Requires, udává, co balíček poskytuje. Většinou se neužívá, občas však využití najde.

Obsoletes:	co nahrazuje

# Náš balíček aktualizuje i ten uvedený, i když se každý jmenuje jinak.

BuildArch:	noarch

# Architektura, pro kterou bude balíček určen. V praxi se používá pouze hodnota noarch pro architektonicky neutrální balíčky.

BuildRoot:	%{_tmppath}/%{name}-buildroot

Adresář, kam se bude program při balení instalovat. Nechte tak.

%description:
obsáhlý popis

To je pro dnešek vše. V příštím díle dokončení popisu obsahu jednoduchého SPEC souboru.


Autor: Miroslav Cyroň

Datum: 28 června 2009

Vstup do diskuze

60 GB her pro Linux

Největší herní repozitář na světě

Žádost o příspěvek.

Žádost o příspěvek

Jak někteří z Vás vědí, jsem těžce invalidní, mobilní jen na invalidním vozíku. Práci na tomto webu věnuji cca 12 hodin denně.

V oblasti financování provozu tohoto webu (HW, hostingu, a podobných věcí) nemohu vše financovat ze svého, proto prosím o příspěvek. Nechci vydělávat, jen udržet provoz.

Pokud je Vám má práce k užitku, přispějte prosím jakoukoliv finanční částkou na účet číslo 178365410/0300. Děkuji moc.

Diskuze

Užitečné odkazy: