přejít na obsah přejít na navigaci

Linux E X P R E S, openSUSE Build Service

openSUSE Build Service

obs.png

Každému z nás se to už určitě stalo. Přečtete si zajímavý článek, kamarád vám něco ukáže nebo nějak jinak narazíte na zajímavý software. Ale co když onen software není v repozitářích? Pak člověku zbývají dvě možnosti. Počkat a doufat, že to někdo zabalí, nebo se sám zapojit. Tento článek nebude o čekání, ale o tom jak si k vytouženému software dopomoci.


reklama

Kompilace ze zdrojáků

Nejjednodušší možnost je zkompilovat si software sám. Zjevná výhoda tohoto přístupu je jeho relativní jednoduchost. Na druhou stranu tento přístup má i své nevýhody. Jedna z nich je nutnost instalovat si všechny devel balíčky. Ty jsou třeba i při každé rekompilaci. A rekompilace je nutná vždy, když se dostatečně změní některý z balíčků na kterých váš oblíbený software závisí. To dostatečně by mělo být patrné z verze, ale nemusí tomu tak být vždy. Je možné že se něco změní jen trochu a výsledek jsou náhodné pády aplikace. Další nevýhoda je, že váš správce balíčků samozřejmě neví o tom, co jste si nainstalovali ručně, a tedy se i o závislosti musíte starat ručně.

Nejrozšířenější build systém jsou autotools. U těch vám ke kompilaci programu většinou stačí ./configure, který zkontroluje, zda máte všechny závislosti nainstalované, následovaný příkazem make. Ten už program opravdu přeloží. Pak by měla následovat fáze make install která program nainstaluje. Výchozí nastavení bývá instalace do /usr/local. Na to bychom ale potřebovali roota a za chvíli by tam byl pěkný binec. Kam se má program instalovat lze ovlivnit volbou ./configure scriptu. Pro lepší pořádek v ručně nainstalovaných programech bych doporučil instalovat každý program do jiného adresáře. Například volat ./configure --prefix=~/myusr/program, kde program je jméno programu (nejlépe bez mezer, proč uvidíme za chvíli). Tím budete mít všechny programy hezky oddělené a usnadní to deinstalaci (stačí smazat patřičný adresář). Na druhou stranu ale nebudeme mít program v cestě (nepůjde ho zavolat z příkazové řádky). To lze vyřešit například přidáním následujícího do souboru ~/.profile nebo ~/.bashrc.

for i in ~/myusr/*/bin; do [ -d "$i" ] && export PATH="$i:$PATH"; done

Věci ale začnou být komplikovanější, pokud chceme používat ručně zkompilované knihovny. V tom případě budeme muset přidat další řádky, které budou podobně upravovat proměnou LD_LIBRARY_PATH. Pokud budeme chtít aby program přibyl v seznamu aplikací, bude to vyžadovat další úpravy. A nakonec člověka napadne, jestli by nebylo přeci jen jednodušší program nechat nainstalovat přímo do /usr a ať si tam dělá co chce a nebo uplácat balíček. Protože všichni máme rádi pořádek na svých strojích, podívejme se jak stvořit balíček.

Balíkaření

Elegantní řešení jak spravovat software je mít ho v balíčcích. Balíčky lze samozřejmě dělat lokálně, ale my se dnes podíváme na mnohem zajímavější možnost. Tou je openSUSE Buildservice. Tato služba umožňuje nechat si vybuildit (tedy sestavit) balíček na cizím stroji a vytvořit si snadno a rychle vlastní repositář s balíčky. A to nejen pro openSUSE. A navíc za vás ohlídá změny závislostí a umožní vám lehce spolupracovat s ostatními.

Jak začít?

Pro využívání openSUSE Buildservice potřebujete Novell login. Pokud jste někdy reportovali bug do openSUSE, dožadovali se featury, nebo upravovali openSUSE Wiki, tak jeden už dozajista máte. Pokud nemáte, není problém si ho vytvořit.

Po zalogování si můžete vytvořit svůj domovský repozitář a v něm si dělat, co chcete. Pokud to s balíkařením myslíte alespoň trochu vážně, určitě se vám bude hodit nástroj osc pro příkazovou řádku i když hodně akcí lze provádět i přímo na webu. Klienta pro příkazovou řádku naleznete na download.opensuse.org/repositories/openSUSE:/Tools/, kde jsou k dispozici repozitáře pro většinu distribucí.

Pohled na projectPohled na project

První balíček

Začněme tedy balit. Budeme vytvářet .rpm balíček, jelikož to je snadnější, ale s vynaložením o trošku většího úsilí lze v openSUSE Build Service vytvářet i .deb balíčky. Nejjednodušší start je kliknout v pohledu na domácí repozitář na odkaz s názvem Add package. Pokud si na následující obrazovce zvolíte experimentálního wizarda, ušetří vám to něco práce. Ve většině případů je volba Generic (./configure && make) to, co chcete. Průvodce vám vygeneruje vzorový .spec file, což je jakýsi recept na upečení .rpm balíčku. Na vás pak už jen bude ho nějak doupravovat.

Další možnost, jak získat .spec file, a možná i lepší a jednodušší, je najít podobný program, který v Build Service už je, a jen si jeho .spec file zkopírovat. Pozor, nejde o funkční podobnost, ale o buildící/závislostní podobnost. Například kecálek pro KDE bude mít blíž k video přehrávači pro KDE, než ke kecálkovi pro GNOME.

Časem dospějete k závěru, že webové rozhraní vám už nestačí, a po vytvoření úvodního .spec file a přidání zdrojáků budete chtít pohodlněji a rychleji dotáhnout balíček do konce. Pak se bude hodit osc. Jak asi vypadá běžný postup práce?

Příkaz osc co home:login stáhne celý váš domácí projekt na váš počítač. Můžete pak soubory editovat lokálně vaším oblíbeným textovým editorem. Nové soubory přidáte do online repositáře pomocí osc add file a odstraníte pomocí osc rm file. Po editaci následuje osc build --no-verify, což zkusí balíček vybuildit lokálně. Stáhne vše potřebné, nainstaluje to do jednoho adresáře, který lze pak snadno odstranit, a zkusí stvořit balíček. Dá se tak rychleji otestovat, zda máte vše v pořádku, než čekat až na vás přijde řada. Pozor, i pro lokální sestavení balíčku potřebujete mít na webu přidánu distribuci, pro kterou chcete balíček tvořit. V okamžiku, kdy jste už se vším spokojeni, je na řadě zdokumentovat změny. Od toho tu je příkaz osc vc. A pak už jen pomocí osc status zkontrolovat, že žádný nový soubor nezůstal opomenut a promítnout změny zpět na server pomocí osc commit.

Kdo co chceKdo co chce

Spolupráce

Jedna z největších předností openSUSE Buildservice je možnost spolupráce s jinými vývojáři. Na to už je ovšem potřeba něco lepšího než jen webové rozhraní. I když jen na některé kroky. A proč spolupracovat? Samozřejmě proto, abyste toho nemuseli dělat tolik sami.

Já mám balíček

Pokud se vám povedlo zabalit si software, není úplně nejlepší nechávat si ho jen pro sebe ve svém projektu. Pokud se vám podaří dostat balíček do nějakého nehome repa, je dost dobře možné, že ho začne používat i někdo jiný. A tito lidé vám mohou pomoci opravit chyby, nebo třeba pošlou update balíčku dříve, než se k tomu dostanete. Většinou stačí si jen zvolit správný projekt ze seznamu projektů, poslat submitrequest a pak reagovat na připomínky mainterů projektu. Odeslání žádosti o přijetí balíčku do projektu se dělá příkazem osc sr home:login balicek projekt_pro_balicek.

On má balíček

Toto je opačný případ než předchozí. Někdo už software, který chcete, zabalil. Ale zabalil starou verzi a nevšiml si, že už je novější k dispozici. Nebo začal s balením, ale nedodělal balíček až do konce. V takovém případě máte usnadněný start. Nejdřív si uděláte svojí vlastní branch kde budete moci dělat změny pomocí osc branch projekt balicek home:login. To vytvoří u vás v domácím projektu branch, kam můžete ukládat změny. A až vše doděláte ke své spokojenosti, odešlete změny zpět. Pokud máte lokální kopii na disku, stačí být v adresáři s balíčkem a spustit osc sr.

Co se v repozitáři dějeCo se v repozitáři děje

Závěr

Pokud vás balíkaření zaujalo a narazíte na nějaké problémy s openSUSE Build Service, nenechte se odradit a přijďte se zeptat. Například na IRC kanále #opensuse-buildservice na irc.freenode.net. Pokud nevládnete angličtinou, na IRC kanále #susecz na stejném serveru se také občas najde někdo, kdo vám poradí ;-)

Nahoru

Odkazy

(Jako ve škole)
Průměr: 1,25 | Hodnotilo: 4
 

Top články z OpenOffice.cz

Příspěvky

openSUSE Build Service
lzap 24. 02. 2010, 18:49:37
Odpovědět  Odkaz 
Velmi zajimava sluzba. Jako uzivatel Ubuntu musim zavidet... ;-)
Miroslav Hrončok Re:openSUSE Build Service
Miro Hrončok 25. 02. 2010, 20:45:49
Odpovědět  Odkaz 
Právě, že nemusíš. Přes OBS vytvoříš balíčky a zdroje pro openSUSE, Mandrivu, Fedoru, Debian i Ubuntu. Jen pro APT balíčky musíš dodat jiný textový soubor místo spec.

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Michal Hrušecký

Michal Hrušecký


  • Distribuce: openSUSE, Gentoo, Android
  • Grafické prostředí: PekWM
  • Hodnocení autora: *

| blog



Public Relations

QNAP uvedl novou modelovou řadu NAS TVS-x82T

Společnost QNAP uvedla na trh novou modelovou řadu NAS TVS-x82T, kterou tvoří tři různé modely (TVS-1282T, TVS-882T a TVS-682T). Nová řada je založena na vícejádrových procesorech Intel Core aktuální generace se 14nm výrobním procesem. Díky nim mohou nové NASy nabídnout dostatek výkonu i pro aplikace náročné na CPU.

Pokračování ...


CIO Agenda 2016