Hlavní navigace

Source Mage GNU/Linux: Stabilní, vývojovou nebo cvs verzi?

18. 11. 2004
Doba čtení: 8 minut

Sdílet

Source Mage GNU/Linux dává uživatelům možnost snadné instalace nejenom stabilních, ale také vývojových nebo dokonce cvs verzí softwarových produktů. Což takhle vývojovou verzi GIMPu nebo denně "čerstvý" MPlayer? Varování: Vývojové i cvs verze jsou vysoce návykové. Jejich používání může vést k odmítání verzí stabilních.

Source Mage GNU/Linux

Vývojovou verzi?

Mnoho svobodných softwarových produktů je k dispozici nejenom ve stabilní, ale také ve vývojové verzi. Příkladem může být grafický editor GIMP. S ním lze dnes pracovat ve stabilní verzi 2.0.6, nebo ve vývojové verzi 2.2-pre1.

Vývojové verze nemusí být určeny pouze těm, kteří se chtějí aktivně podílet na vývoji nebo testování. Po vývojových verzích rádi sáhnou také zkušení uživatelé vyžadující funkce, které ve stabilní verzi zatím obsaženy nejsou. I běžní uživatelé rádi vyzkouší vlastnosti a funkce příští stabilní verze. Zpátky se ale mnoho z nich už nevrátí. Upřednostní vývojovou verzi s novými vlastnostmi – i když někdy spojenými s občasnými nepříjemnostmi – před stabilní, ale „omezenou“ verzí.

Source Mage dává uživatelům u řady softwarových produktů možnost výběru mezi stabilní a vývojovou verzí. Při instalaci produktu (cast spell) může být uživatel tázán, zda má zájem o vývojovou verzi. Přednastavená odpověď je „n“. Přednost má tedy verze stabilní.

# cast -r -c gimp
Computing previously installed dependencies...
Preparing environment for gimp
Build DEVEL version? [n] 

Zpracování otázky – její zobrazení, načtení a zapamatování odpovědi – je zajišťováno relativně novou funkcí config_query.

config_query DEVEL "Build DEVEL version?" n

Před přidáním této funkce do sorcery muselo být zpracování otázky součástí spellu. Místo jednoho řádku muselo být v souboru PREPARE nebo CONFIGURE řádků několik.

if  !  grep  -q  DEVEL  ${SPELL_CONFIG}
then

  if    query "Build DEVEL version?" n
    then  DEVEL=y
    else  DEVEL=n
  fi

  echo  "DEVEL=$DEVEL"  >>  ${SPELL_CONFIG}
fi

Možnost výběru mezi stabilní a vývojovou verzí softwarového produktu nijak nesouvisí s větví grimoire. Uživatel využívající stabilní grimoire může instalovat vývojové verze, stejně tak uživatel využívající testovací grimoire může instalovat stabilní verze softwarových produktů.

V souboru DETAILS je na základě uživatelovy odpovědi (obsah proměnné DEVEL) do proměnné VERSION přiřazeno konkrétní číslo verze a do proměnné MD5[0] příslušný md5 otisk.

if [ "$DEVEL" == "y" ];then
     VERSION=2.2-pre1
      SOURCE=$SPELL-$VERSION.tar.bz2
      MD5[0]=2ce5eaa15d6ceda8b7f61b27e6c2141e
   SOURCE_URL[0]= ftp://ftp.gimp.org/pub/gimp/ v2.2/testing/$SOURCE
else
     VERSION=2.0.6
      SOURCE=$SPELL-$VERSION.tar.bz2
      MD5[0]=1c06f26effeb273c0113e2df03cde561
   SOURCE_URL[0]= ftp://ftp.gimp.org/pub/gimp/ v${VERSION%.*}/$SOURCE
fi 

(Pozn. red.: zde i později byly mezery do řádek SOURCE_URL přidány kvůli sazbě –Johanka)

Pokud se překlad, instalace nebo závislosti jednotlivých verzí liší, je nutné obdobně upravit i soubory BUILD, INSTALL nebo DEPENDS.

Kterou z verzí?

Funkce config_query umožňuje výběr ze dvou možností (y/n). K výběru z více možností slouží funkce config_query_list. Táto funkce je použita například při instalaci GUI knihovny FOX. Uživatel si může vybrat mezi aktuální stabilní verzí, vývojovou verzí a starou stabilní verzí.

config_query_list REL "Which release?" current devel old
# cast -r -c fox
Computing previously installed dependencies...
Preparing environment for fox
         (0) current
         (1) devel
         (2) old
Which one do you want? [0] 

Konkrétní čísla jednotlivých verzí se nacházejí v souboru DETAILS.

if    [  "$REL"  =  "old"  ];  then
         VERSION=1.0.52
          MD5[0]='9b5e3cbad0e625ac20e67692ef2b9326'
elif  [  "$REL"  =  "devel"  ];  then
         VERSION=1.3.17
          MD5[0]=948532da5c72f914df9f62c894e39054
else
         VERSION=1.2.11
          MD5[0]=d2424d9224b426cc840fcd907e0b1cb7
fi

CVS verzi?

Zdrojové kódy softwarových produktů jsou obvykle dostupné v podobě zdrojových balíků (tar.bz2, tar.gz, tgz, zip), které lze získat pomocí HTTP nebo FTP protokolů. Některé produkty lze navíc získat pomocí CVS. Existují ale také produkty, jejichž zdrojové kódy jsou dostupné pouze pomocí CVS. Příklady lze najít například v sekci „e“. Příznivci Enlightenmentu zcela jistě tuší, že se jedná o sekci obsahující spelly související s tímto skvělým, pro některé z nás nejlepším, správcem oken. Pouze pomocí CVS lze stáhnout například prohlížeč obrázků Entice, souborový manažer Evidence nebo zajímavý panel Engage.

Source Mage má podporu CVS zabudovanou přímo v sorcery. Uživatel může být při instalaci spellu tázán, zda má být ke stažení potřebných zdrojových kódů použito CVS. Přednastavenou odpovědí je obvykle „n“, tj. přednost mají standardní zdrojové balíky. Rozhodne-li se uživatel pro CVS, je stáhnutí zdrojových kódů i jejich následná aktualizace plně v režii sorcery. Uživatel tak nemusí vůbec znát příkazy systému CVS. Nemusí vědět, jak to všechno funguje. Stačí se rozhodnout pro cvs verzi a sorcery vše zařídí.

Příkladem může být multimediální přehrávač MPlayer. Uživatel je při jeho instalaci tázán, zda má zájem o CVS verzi.

config_query CVS "Build CVS version?" n
# cast -r -c mplayer
Computing previously installed dependencies...
Preparing environment for mplayer
Build CVS version? [n] 

Následuje dalších 37 dotazů týkajících se konfigurace MPlayeru. V březnu 2003 bylo dotazů „pouze“ 27.

Rozhodne-li se uživatel pro stabilní verzi, je instalována verze 1.0pre5. Soubor se zdrojovými kódy MPlayer-1.0pre5.tar.bz2 je stažen pomocí FTP (ftp://) a uložen do adresáře /var/spool/sorcery. V případě CVS verze jsou zdrojové kódy staženy pomocí CVS (cvs://) a zabaleny do souboru mplayer-cvs.tar.bz2 (proměnná SOURCE). Ten je následně také uložen do adresáře /var/spool/sorcery.

if [ "$CVS" = "y" ]; then
     VERSION=$(date +%Y%m%d)
      SOURCE=$SPELL-cvs.tar.bz2
    SOURCE_URL[0]= cvs://:pserver:anonymous@mplayerhq.hu: /cvsroot/mplayer:main
      MD5[0]=IGNORE
  FORCE_DOWNLOAD=on
SOURCE_DIRECTORY=$BUILD_DIRECTORY/$SPELL-cvs
else
     VERSION=1.0pre5
      SOURCE=MPlayer-$VERSION.tar.bz2
    SOURCE_URL[0]= ftp://mplayerhq.hu/MPlayer/releases/$SOURCE
      MD5[0]=b9440fbd62b52b41502ec8cabe0ef9cd
SOURCE_DIRECTORY=$BUILD_DIRECTORY/MPlayer-$VERSION
fi 

U cvs verzí softwarových produktů nelze v souborech DETAILS stanovovat md5 otisky zdrojových kódů, poněvadž jsou tyto kódy neustále měněny. Proměnná MD5[0] má proto hodnotu IGNORE.

Instalace obou verzí je téměř shodná. Soubor se zdrojovými kódy je rozbalen do adresáře /usr/src. Vlastní překlad je řízen souborem BUILD, instalace souborem INSTALL.

Rozdíl je v aktualizaci. Na novou stabilní nebo i vývojovou verzi lze čekat několik měsíců. CVS verze může být aktualizována i několikrát denně (samozřejmě pouze pokud stíhají vývojáři). Po uvolnění nové stabilní nebo vývojové verze je obvykle nutné opětovně „zbytečně“ stahovat všechny zdrojové kódy. Jenom občas je poskytován také rozdílový soubor, tj. patch, diff nebo xdelta diff. V případě použití CVS jsou stahovány pouze změny, obvykle několik málo souborů.

MPlayer má cvs verzi definovanou jako VERSION=$(date +%Y%m%d). Tím je zajištěno, že při vytváření seznamu spellů, které mají být aktualizovány (sorcery queue nebo sorcery system-update), je do seznamu automaticky zařazen i MPlayer. Verzi spellu lze zjistit příkazem gaze version. V tomto případě představuje grimoire verze aktuální datum a nainstalovaná verze datum instalace.

# gaze version mplayer
Grimoire Section Spell   Grimoire Version Installed Version
-------- ------- -----   ---------------- -----------------
test     video   mplayer 20041104         20041103
# cast mplayer
Computing previously installed dependencies...
Preparing environment for mplayer
[[ Build CVS version? -> y ]]
[[ Enable GUI support? -> y ]]
[[ Enable Joystick support? -> y ]]
[[ Enable (experimental) OSD Menu? -> n ]]
Checking dependencies for mplayer
Collating dependencies...
Spells are to be cast:
---------------------------
mplayer

Do you want to cast these spells? [y]

Downloading source file mplayer-cvs.tar.bz2 for spell mplayer
Previous source found. Extracting package mplayer-cvs.tar.bz2...
Running cvs update...
P AUTHORS
P ChangeLog
P mplayer.c
P DOCS/tech/MAINTAINERS
P DOCS/xml/hu/mail-lists.xml
P DOCS/xml/hu/ports.xml
P libmpeg2/cpu_accel.c
P libmpeg2/cpu_state.c
P libmpeg2/idct.c
P libmpeg2/idct_mmx.c
P libmpeg2/libmpeg-0.4.0.diff
P libmpeg2/motion_comp.c
P libmpeg2/motion_comp_mmx.c
P libvo/vo_svga.c
Creating package mplayer-cvs.tar.bz2...

Waiting for any Solo casts to complete...
Waiting for any other casts of mplayer to complete... done.
Building mplayer
Unpacking source file mplayer-cvs.tar.bz2 for spell mplayer.
mplayer: MD5 sum was purposefully left out for the uncompressed mplayer-cvs.tar.bz2.
Would you like to abort so you can validate the source yourself via some alternate method?
Abort? [y] 

Samozřejmě se může stát, že aktuální cvs verze je nepoužitelná. Pokud ji nelze ani přeložit, zůstává nainstalována verze předchozí. Pokud aktuální verze nevyhovuje, lze se vrátit k libovolné předchozí verzi nacházející se v adresáři /var/cache/sorcery (dispel -d).

Subversion nebo BitKeeper verzi?

Kromě CVS je plánovaná podpora dalších protokolů. Vývojová verze sorceryjiž obsahuje podporu Subversion. Ve svém úkolovníku (TODO list) mám přidání podpory BitKeeper. Pokud má někdo zájem, stačí zkopírovat soubor url_cvs z adresáře /var/lib/sorce­ry/modules/ur­l_handlers do souboru url_bk a trochu jej pozměnit. :-))

Pomocí BitKeeper lze stahovat například zdrojové kódy multimediálního přehrávače XMMS2 (nová generace XMMS). Spell bitkeeper jsem již vytvořil a přidal do z-rejected grimoire.

P2P

Někteří uživatelé Source Mage by zdrojové kódy rádi stahovali pomocí BitTorrent nebo jiné P2P (peer-to-peer) technologie. Proč soubory stahovat z druhé strany světa, když je již někdo z okolí stáhl a je ochoten je poskytnout? Samozřejmě lze soubory stáhnout „ručně“ a uložit do adresáře /var/spool/sorcery. Pokud by se ale BitTorrent dostal do sorcery (Bug 3873), bylo by to jednodušší. Uživatel by mohl na BitTorrent, stejně jako na CVS, zcela zapomenout. Vše by probíhalo automaticky.

CS24_early

V diskusi byl zmíněn také P2P systém White Water využívaný v linuxové distribuci Rubyx. Rubyx je další z linuxových distribucí založených na zdrojových kódech. K správě této distribuce slouží skript rubyx naprogramovaný v programovacím jazyceRuby.

PS:

Vývojový tým Source Mage uvolnil koncem října novou verzi instalačního CD (0.9.3). Tentokrát současně pro architektury x86 a ppc. Nechcete vyzkoušet? :-))

Byl pro vás článek přínosný?

Autor článku