Portál AbcLinuxu, 2. května 2025 18:58
openSUSE Build Service pro vás zkompiluje a sestaví balíčky použitelné v mnoha různých distribucích (SUSE, Fedora, Mandriva, Debian, Ubuntu a další). Pokud potřebujete vytvořit balíček pro svou potřebu, nebo chcete přispět ostatním uživatelům zabalením softwaru, pro který není balíček k dispozici, přečtěte si, jak na to.
Poznámka: Tento návod je orientován na vytváření balíčků pro RPM-pozitivní distribuce.
Jako Build Service je většinou označováno konkrétní nasazení openSUSE Build Service Serveru, které je provozováno společností Novell na adrese build.opensuse.org.
Jedná se o projekt, který byl vytvořen ve snaze zvýšit počet dostupných balíčků pro distribuci openSUSE. Vývojáři však šli o kus dále a napsali tento software tak, aby se dal využít i k vytváření balíčků pro další distribuce. Není tak příliš velký problém vytvořit distribuční balíček pro Fedoru, openSUSE, Mandrivu a další distribuce. Tohoto se dá dosáhnout z jednoho dobře napsaného .spec souboru (balící instrukce pro RPM), jedné sady patchů a jedné originální tarové koule se zdrojovými kódy.
K projektu OBS se dá přistupovat několika způsoby. Buďto pomocí webového rozhraní (build.opensuse.org), které však zatím neposkytuje přístup ke všem funkcím, jež OBS nabízí. Dalším způsobem je použití programu openSUSE Commander. Dále lze k OBS přistupovat také pomocí veřejného API, a tak není problém OBS ovládat pomocí programu CURL nebo vlastního klienta v Perlu. Fantazii se meze nekladou.
Pro přístup potřebujete „běžný novellí účet“. Tedy ten, který se používá k přístupu na WIKI, do Bugzilly apod. Ten si můžete volně registrovat, pak již vám nic nebrání si požádat i o povolení přístupu k OBS.
V době, kdy jsem si o přístup k OBS žádal já, byl trochu problém s tím, že bylo nutné povolení přístupu někým z OBS týmu. To jsem vyřešil tak, že jsem se přihlásil na IRC kanál #openSUSE-buildservice v síti Freenode a požádal jsem jednoho z adminů, jestli by se na mou žádost nemohl podívat. Nyní je už vstup volný a k žádné větší prodlevě nedochází. Účty povoluje nějaký robot.
Pokud chceme s OBS pracovat na co nejlepší úrovni, tak se nám bude hodit prográmek openSUSE Commander, který je řádkovým klientem k openSUSE Build Service. Ten se nachází v repozitáři openSUSE:Tools. Je několik způsobů, jak jej nainstalovat. Můžeme využít služby nástroje One Click Install a nainstalovat balíček touto cestou, nebo si přidat repozitář ručně a nainstalovat balíček pomocí Zypperu následující sekvencí příkazů.
zypper ar --no-refresh --repo http://download.opensuse.org/repositories/openSUSE:/Tools/openSUSE_10.3/openSUSE:Tools.repo # Parametr --no-refresh je volitelný a zabrání automatickému obnovování repozitáře, nebude se tak brzdit práce s balíčkovacím systémem zypper ref zypper install osc
Nyní, když máme osc
nainstalován, tak bychom měli provést nastavení. Nejdříve tedy spustíme osc
bez jakýchkoli parametrů a odpovíme na dotazy na uživatelské jméno a heslo.
marek@mantisha:~ # osc Your user account / password are not configured yet. You will be asked for them below, and they will be stored in /home/marek/.oscrc for future use. Username: m4r3k Password: Creating osc configuration file /home/marek/.oscrc ... done.
Konfigurace se uloží do souboru ~/.oscrc
, který má jednoduchou syntaxi a je rozdělen do několika sekcí. Doporučuji si také nastavit sudo
pro práci s utilitou /usr/bin/build
. Ušetříte si tak práci se zadáváním hesla. K tomu stačí do souboru ~/.oscrc
zapsat řádek su-wrapper = sudo
, který musí být v sekci [general]
, a patřičně nastavit pravidlo pro sudo
. To provedeme například přes YaST.
Nastavení příkazu sudo v YaSTu
Spolu s účtem vám byl automaticky vytvořen i domáci projekt, kde si můžete libovolně hrát se svými balíčky. Váš domovský projekt má jméno home:váš-nick
. V mém případě je to tedy home:m4r3k
. Je vhodné si tento projekt pomocí osc stáhnout k sobě a pak pomocí osc
přidat balíček.
mkdir -p ~/buildservice # Vytvoříme si adresář pro naše hrátky cd ~/buildservice osc checkout home:m4r3k # Tímto příkazem si stáhneme projekt home:m4r3k osc meta pkg -e home:m4r3k testovaci-balik # Tímto příkazem přidáme balík do projektu home:m4r3k
Po spuštění posledního příkazu se vám spustí textový editor, který máte nastaven v proměnné $EDITOR
se skeletonem, do kterého vyplníte základní informace o balíčku.
<package name="testovaci-balik"> <title>Title of New Package</title> <description>LONG DESCRIPTION GOES HERE </description> <person role="maintainer" userid="m4r3k"/> <!-- use one of the examples below to disable building of this package on a certain architecture, in a certain repository, or a combination thereof: <disable arch="x86_64"/> <disable repository="SUSE_SLE-10"/> <disable repository="SUSE_SLE-10" arch="x86_64"/> --> </package>
Do tagu title
vyplníme název našeho balíčku, třeba testovaci-balik
, do pole description
vyplníme nějaký popis k balíčku (nejlépe anglicky). Ostatní možnosti můžeme zatím nechat tak, jak jsou. Tímto jsme si tedy vytvořili na serveru balíček testovaci-balik
v projektu home:m4r3k
, který je před osc
reprezentován jako podadresář testovaci-balik
v adresáři home:m4r3k
. Na náš počítač si jej stáhneme pomocí příkazu osc up
, který spustíme v adresáři home:m4r3k
.
Nyní se přepneme do adresáře testovaci-balik
a přidáme archiv se zdrojovými soubory nebo zdrojový soubor. K tomuto poté napíšeme nějaký .spec soubor, který promění náš archiv na balíček. Pomocí oblíbeného editoru tedy vytvoříme soubory openSUSE.txt
, Fedora.txt
a Mandriva.txt
s libovolným obsahem.
K těmto souborům si napíšeme následující soubor testovaci-balik.spec, který může obsahovat podmíněné části (Build Service/cross distribution package how to):
# # This file and all modifications and additions to the pristine # package are under the same license as the package itself. # # norootforbuild Name: testovaci-balik Version: 1 Release: 0 Summary: Testing package. Group: Documentation/Other License: GPLv2 %if %{defined suse_version} Source: openSUSE.txt %endif %if %{defined fedora_version} Source: Fedora.txt %endif %if %{defined mandriva_version} Source: Mandriva.txt %endif BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot %description Authors: -------- Marek Stopka%prep rm -rf $RPM_BUILD_ROOT %build %install install -d $RPM_BUILD_ROOT/etc/ install -m 744 %{S:0} $RPM_BUILD_ROOT/etc/ %clean rm -rf $RPM_BUILD_ROOT %post %postun %files %defattr(-,root,root,0755) %if %{defined suse_version} /etc/openSUSE.txt %endif %if %{defined fedora_version} /etc/Fedora.txt %endif %if %{defined mandriva_version} /etc/Mandriva.txt %endif %changelog * Sat Mar 01 2008 - marekstopka@gmail.com - new package created
Nyní můžeme pomocí osc
vyzkoušet sestavení balíčku na našem vlastním stroji (vždy je lepší si první sestavení vyzkoušet u sebe, zbytečně tak nebudeme plýtvat prostředky Build Service) pomocí příkazu:
osc build openSUSE_10.3 i586 testovaci-balik.spec
Pokud vše proběhne v pořádku, tak si do projektu přidáme všechny soubory z aktuálního adresáře (osc add *
) a pošleme je na server pomocí příkazu osc commit
. Kdybychom měli k projektu přiřazené nějaké repositáře, pro které chceme balíček sestavit, tak už by se začal balíček sestavovat. Zatím je tam však nemáme, přidáme je po reklamě :-).
Přidávání repozitářů, pro které se bude balíček sestavovat, proměnné určující verze různých distribucí a řešení závislostí.
osc
vycházejí velmi často. Chtělo by to spíš nějakou vhodnou stránku na openSUSE Wiki, asi osc submitreq
, ale asi jsem úplně tupej, takže se mi zatím nezadařilo (i když zas tak moc času jsem s tím neztratil a ne, na IRC jsem se taky ještě neptal). Počkám si na další díly, třeba se dočkám ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.