Portál AbcLinuxu, 2. května 2025 18:58

openSUSE Build Service (OBS) aneb jak ho sbalit

17. 6. 2008 | Mark Stopka
Články - openSUSE Build Service (OBS) aneb jak ho sbalit  

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.

Instalace openSUSE Commanderu (OSC)

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.

opensuse buildservice - Nastavení příkazu sudo v YaSTu
Nastavení příkazu sudo v YaSTu

První balíček v domovském projektu

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říště...

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í.

Seriál openSUSE Build Service (dílů: 5)

První díl: openSUSE Build Service (OBS) aneb jak ho sbalit, poslední díl: Lokální Buildservice (OBS) – sestavujte vlastní balíčky.
Následující díl: openSUSE Build Service (OBS) - 2

Související články

Michal Švec a Vojtěch Pavlík o SUSE
Na co se často ptáme: Balíčkovací systémy
Seriál: Instalace softwaru v Linuxu
Seriál: Gentoo ebuild
Seriál: Rukověť baliče RPM
Seriál: Balíčkovací systém Arch Linuxu
Smart Package Manager - instalujeme chytře
Zdroje balíčkov pre Ubuntu
Balíčkovací systém Mandrake Linuxu
Balíčkovací systém Gentoo Linuxu
openSUSE 10.3
OpenSUSE 10.2
OpenSUSE 10.0

Odkazy a zdroje

Build Service
build.opensuse.org

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

Diskuse k tomuto článku

17.6.2008 13:45 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: openSUSE Build Service (OBS) aneb jak ho sbalit
Odpovědět | Sbalit | Link | Blokovat | Admin
Jenom bych dodal, že většina věcí jde udělat i přes webové rozhraní build.opensuse.org, takže nemusíte editovat žádné XML soubory, pokud nechcete. Výhoda OSC je v tom, že je rychlejší (když víte jak na to) a dá se použít ve skriptech.
17.6.2008 14:28 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: openSUSE Build Service (OBS) aneb jak ho sbalit
A taky webové rozhraní zatím AFAIK neposkytuje plnou funkcionalitu. V budoucích dílech se nejspíše zaměřím i na webové rozhraní.
Milan Vít avatar 17.6.2008 14:48 Milan Vít | skóre: 23 | blog: about:linux | Orlová
Rozbalit Rozbalit vše Re: openSUSE Build Service (OBS) aneb jak ho sbalit
Odpovědět | Sbalit | Link | Blokovat | Admin
Odkaz na repozitář openSUSE:Tools nefunguje, asi by bylo lepší, aby odkaz vedl na nadřazený adresář nebo možná někam úplně jinam :-)
„There is no dark side of the Moon really… as a matter of fact it's all dark.“
Luboš Doležel (Doli) avatar 17.6.2008 14:55 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: openSUSE Build Service (OBS) aneb jak ho sbalit
Odkaz jsem aktualizoval, aby tam ten soubor nemuseli lidi hledat, ale na druhou stranu nevím, jak dlouho vydrží funkční.
Milan Vít avatar 17.6.2008 15:22 Milan Vít | skóre: 23 | blog: about:linux | Orlová
Rozbalit Rozbalit vše Re: openSUSE Build Service (OBS) aneb jak ho sbalit
Právě, co jsem slyšel, tak nové verze osc vycházejí velmi často. Chtělo by to spíš nějakou vhodnou stránku na openSUSE Wiki, asi :-)
„There is no dark side of the Moon really… as a matter of fact it's all dark.“
17.6.2008 15:27 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: openSUSE Build Service (OBS) aneb jak ho sbalit
17.6.2008 15:12 Michal Ludvig | skóre: 16
Rozbalit Rozbalit vše Re: openSUSE Build Service (OBS) aneb jak ho sbalit
Odpovědět | Sbalit | Link | Blokovat | Admin
Zatím jsem nezjistil jak balík ze svého home:mludvig dostanu do nějakého "opravdového" projektu. Tuším že by to mohlo mít něco společného s 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 :-)
17.6.2008 15:17 Käyttäjä 11133 | skóre: 58 | blog: Ajattelee menneisyyttä
Rozbalit Rozbalit vše Re: openSUSE Build Service (OBS) aneb jak ho sbalit
No! Ta možnost v OSC je nová. Nevím jak je široce používaná správci těchto projektů. Nicméně já to většinou řešil mailem. :-)
18.6.2008 22:59 anicka | blog: ze_zivota
Rozbalit Rozbalit vše Re: openSUSE Build Service (OBS) aneb jak ho sbalit
My se to zatím tak učíme používat, je to tam tak týden :-)

Zatím funguje žádost mailem (nebo na mailing listu), ale za pár dnů si snad všichni zvykneme :-)
^D
7.7.2008 21:41 unknown
Rozbalit Rozbalit vše Re: openSUSE Build Service (OBS) aneb jak ho sbalit
Dobry vecer,

zacal som si citat tento clanok a zastavil som sa skoro hned na zaciatku. Mam vytvoreny ucet na www.opensuse.org a mozem sa tym prihlasit aj na Novell. Len neviem, ako poziadat o pristup k OBS.
7.7.2008 22:43 unknown
Rozbalit Rozbalit vše Re: openSUSE Build Service (OBS) aneb jak ho sbalit
aha, uz to mam :-) ... aj ked to dlho hladam, vacsinou to najdem, az ked napisem na forum :-)

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.